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

Nginx (для статических файлов) и Apache (для динамического содержимого)?

Итак, все мое приложение отлично работает на apache. Однако я хочу проверить, насколько увеличивается количество запросов в секунду, если вместо этого я помещу все статические файлы через nginx.

Я нашел эту ветку: https://stackoverflow.com/questions/869001/how-to-serve-all-existing-static-files-directly-with-nginx-but-proxy-to-apache-t

Но у меня есть пара проблем. Я новичок в nginx, поэтому не знаю, где разместить конфигурацию. (Файл находится в /etc/nginx/nginx.conf, но я не знаю, просто добавляю ли код внизу или как?)

Кроме того, как я могу запустить оба сервера одновременно? Это потому, что они оба слушают порт 80? Прямо сейчас я должен остановить одно, чтобы запустить другое, и это все, что у меня есть.

Спасибо за любую помощь.

Они могут быть на одном порту, если они на разных IP. Или они могут быть на разных портах с одним и тем же IP-адресом, но не на обоих (также могут быть разные IP-адреса и разные порты). Сценарий с несколькими IP-адресами требуется, если это будут разные серверы, но вы можете использовать несколько IP-адресов на одном сервере.

Клянусь, я не пытаюсь вас запутать :-)

В директива местоположения в предоставленной вами ссылке войдет в директива сервера (Обратите внимание, что в документации для директивы location есть «context: server»). Если вы используете последнюю версию Ubuntu с apt-установкой по умолчанию, вы, вероятно, захотите изменить default в каталоге с поддержкой сайтов. Например (немного глупо, поскольку он все передает Apache):

server {
    listen   80 default;

    access_log  /var/log/nginx/localhost.access.log;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:2500;
    }
}

В этом случае я использую один и тот же сервер для обоих. Nginx прослушивает 80, а Apache - 2500. Вы должны указать DNS на IP-адрес сервера Nginx, поскольку именно он обрабатывает все запросы, проксируя другие серверы. В основном, с точки зрения клиента, они общаются только с сервером Nginx.

Я не могу помочь с конфигурацией nginx, потому что сам еще не использовал ее, но если вы посмотрите фрагменты конфигурации в том вопросе, который вы связали, вы увидите, что Apache работает на порту 8080. Это ключ к тому, чтобы оба работали одновременно - они должны быть на разных портах. Поскольку nginx выполняет проксирование для Apache, пользователь никогда не видит, на каком порту работает последний, и ему это не нужно.