Добро пожаловать в мой интернет блог

Ноя
07
2011

nginx: Настройка frontend к Apache  

Учитывая, что ресурсы сервера не безграничны, попробуем их оптимизировать.

Снизить нагрузку на сервер и уменьшить время отклика, нам поможет легкий nginx. Он будет часть запросов перенаправлять к Apache, а часть — обслуживать сам. То есть картинки, скрипты и другие фалы, не являющиеся php и perl скриптами (всю статику).

Итак, приступим!

Перенесем Apache на другой порт/IP (например на localhost) и поставим на его место nginx. Для этого изменим в httpd.conf параметр Listen, например так:

Listen 127.0.0.1:80


Если у вас несколько IP и вы хотите заменить Apache на nginx только на одном из них, укажите несколько параметров Listen:

#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/;)

Что еще почитать...