nginx: Настройка frontend к Apache | |
Обновлено 22 Апреля 2012
Учитывая, что ресурсы сервера не безграничны, попробуем их оптимизировать.
Снизить нагрузку на сервер и уменьшить время отклика, нам поможет легкий nginx. Он будет часть запросов перенаправлять к Apache, а часть — обслуживать сам. То есть картинки, скрипты и другие фалы, не являющиеся php и perl скриптами (всю статику).
Итак, приступим!
Перенесем Apache на другой порт/IP (например на localhost) и поставим на его место nginx. Для этого изменим в httpd.conf параметр Listen, например так:
Listen 127.0.0.1:80
#Listen 192.168.1.1:80 Listen 127.0.0.1:80 Listen 192.168.1.2:80 Listen 192.168.1.3:80
Больше ничего менять в конфигурации Apache не нужно.
Для nginx настройки будут выглядеть так:
server { listen 192.168.1.1:80; server_name example.com www.example.com; ... location / { proxy_pass http://127.0.0.1:80/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* \.(jpg|gif|png|css|js)$ { root /var/www/$host/; } }
Строки заголовка запроса X-Real-IP и X-Forwarded-For понадобятся, если вы в своих скриптах используете информацию об IP-адресе посетителя. В этом случае, необходимо будет дополнительно настроить специальный модуль Apache для замены IP-адреса frontend на адрес посетителя: mod_rpaf.
В папке www находятся сайты (например /var/www/mainfrm.ru), поэтому необходимо добавить строчку root /var/www/$host/; (актуально, если у вас несколько сайтов, иначе просто root /var/www/example.com/; или root /var/www/;)