Назад | Перейти на главную страницу

Nginx как обратный прокси перед Apache

Текущая настройка Один CentOS 6 VPS с памятью 6G, работающий под управлением apache 2.2, mariadb и PHP через FastCGI. На сервере в основном есть сайты на wordpress, но есть и другие сайты на PHP. В настоящий момент мы не используем HTTPS ни для одного сайта, но планируем добавить его для аутентификации на сайтах на базе PHP.

  1. Есть ли какие-либо преимущества в добавлении Nginx в качестве обратного прокси (с кешированием или без) для статического содержимого перед apache + FastCGI на том же физическом сервере? В Apache не загружен mod_php, поэтому он уже довольно быстро обслуживает статические.
    1а. Каковы возможные преимущества сохранения apache посередине и сохранения связи apache-php с FastCGI.
    1b. Если мы изменим Apache-FastCGI на Apache-mod_php, будут ли какие-то преимущества? Поскольку сейчас единственная задача apache - обслуживание динамического содержимого, улучшит ли mod_php производительность? Как и в случае с Apache-FstCGI, apache должен запрашивать отдельный процесс (FastCGI) для синтаксического анализа php, а в mod_php процесс apache может анализировать php напрямую.
    1c. Какой сервер должен обрабатывать материалы SSL?
  2. Если apache удален из середины, а Nginx напрямую использует php-fpm для динамического содержимого, будут ли какие-то преимущества?
  3. Мы рассматриваем возможность получения бесплатного плана CloudFlare для добавления CDN, поэтому имеет ли смысл добавлять nginx, если впереди стоит CloudFlare?

1) Да, в основном, когда apache обрабатывает медленные HTTP-клиенты: apache разработан таким образом, что его дочерний элемент блокируется до тех пор, пока он не обслуживает одного клиента, поэтому он не может обслуживать других. Итак, если у вас много клиентов, дочерние элементы apache будут складываться, потребляя память / ЦП и, вероятно, достигая верхнего предела, что делает эту ситуацию DoS.

1а) Я ничего не вижу.

1b) Да, модуль php намного быстрее по дизайну. Но эта скорость видна только в математике, а не в файловых операциях. Поэтому я рекомендую избавиться от apache и использовать nginx + FastCGI.

1c) На самом деле это не имеет значения, однако я полагаю, что это должен быть первый сервер в цепочке, так как он более удобен.

2) Да. Скорость (с любым клиентом), статические файловые операции, кеширование, меньшее потребление памяти. Бьюсь об заклад, вы увидите разницу без каких-либо инструментов для тестирования.

3) Я бы сказал, что не вижу необходимости использовать CloudFlare CDN. Если бы он вам действительно понадобился - вы бы уже избавились от apache. Поскольку вы этого не сделали - это означает, что нагрузка на ваши веб-серверы низкая. Но если вы настаиваете на ответе на вопрос - сомневаюсь. Я сомневаюсь, что действительно нужно что-то делать, если вы довольны тем, как обстоят дела сейчас. Я говорю это без всякого сарказма.