Повышение производительности веб-сервера: ставим nginx перед apache
В одной из заметок мы описали как настроить nginx + php-fpm. Но nginx можно использовать и немного по другому. Например, если нету желания полностью отказываться от apache, но ускорить работу веб сервера хочется. (Возможно, у вас реализована сложная система редиректов, которую не хотите портировать на nginx).
В таком случае возможное решение - использовать nginx только для отдачи статики (картинок, css, js и т.д. файлов). Остальные же запросы (к php движку, к примеру) перенаправим по прежнему к apache (подразумевается, что у вас уже настроен сайт для работы с последним). Для этого настроим nginx для отдачи статики, все остальные запросы по прежнему проксируем к apache. (В таком случае можно обойтись без php-fpm).Приблизительный конфиг nginx (только для http):
# /etc/nginx/sites-enabled/site.com.conf
server {
listen 80;
server_name www.site.com site.com;
access_log /var/log/nginx/site_access.log;
error_log /var/log/nginx/site_error.log;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|woff)$ {
root /var/www/site.com;
# Время жизни кеша ассетов
expires 30d;
}
}
http://backend - конфигурация вынесена в отдельный файл:
# /etc/nginx/conf.d/backend.conf
upstream backend {
server 127.0.0.1:8080;
}
Для apache никаких особенных настроек не требуется, кроме переведения хостов на порт, отличный от дефолтного:
<VirtualHost 127.0.0.1:8080>
Вместо 8080 можно использовать любой свободный порт, главное заменить дефолтный 80, на котором будет слушать nginx.
После конфигурации не забудьте релоаднуть nginx и apache =)
Если у вас system.d:
systemctl reload apache2 nginx