Nginx и Apache2. Установка и быстрая настройка!
Зачем нужен Nginx?
Это веб-сервер, предназначенный в основном для отдачи статики (для того чтобы разгрузить бекенд) и использования в качестве фронтендов. Apache при этом можно использовать в качестве бэкенда для генерации динамического контента. Так же Nginx можно использовать в режиме FastCGI, при этом Apache вам не понадобится. Однако при этом режиме у PHP наблюдается ряд проблем, поэтому на помощь приходит php-fpm!
Однако мы сегодня поговорим о совместной установке с Apache, а не в режиме FastCGI. Более того, по задаче у нас эти веб-сервера будут находится на одном сервере, поэтому выделим для Nginx — 80, а для Apache — 88 порт!

Установка Apache и Nginx
Ставим Apache:
Ставим Nginx:
Настройка Nginx
Отредактируем файл /etc/nginx/nginx.conf
# пользователь и группа от которого запускается процесс
user www www;
# 3 рабочих процесса (лучше ставить аналогично кол-ву ядер в ЦП)
worker_processes 3;
# Лог для ошибок
error_log logs/error.log;
events {
# максимум рабочих соединений
worker_connections 1024;
# Метод обработки соединений
# kqueue — эффективный метод, используемый во FreeBSD
# Подробнее http://sysoev.ru/nginx/docs/events.html
use kqueue;
}
http {
# Подключаем таблицу mime
include mime.types;
# mime-тип по умолчанию
default_type application/octet-stream;
# Формат лог файла
#log_format main '$remote_addr - $remote_user [$time_local] $request '
# '"$status" $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
# Лог доступа всего веб-сервера
#access_log logs/access.log main;
# Директива задаёт таймаут при чтении заголовка запроса клиента
client_header_timeout 3m;
# Директива задаёт таймаут при чтении тела запроса клиента
client_body_timeout 3m;
# Директива задаёт таймаут при передаче ответа клиенту
send_timeout 3m;
# Директива задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера
keepalive_timeout 2m;
# Директива разрешает или запрещает использовать sendfile()
sendfile on;
# Директива разрешает или запрещает использовать опции TCP_NOPUSH во FreeBSD
# Подробнее http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#keepalive_timeout
#tcp_nopush on;
# Директива задаёт размер буфера для чтения заголовка запроса клиента
#client_header_buffer_size 1k;
# Директива задаёт максимальное число и размер буферов для чтения большого заголовка запроса клиента
#large_client_header_buffers 4 4k;
# Модуль позволяет описывать группы серверов, которые могут использоваться
# в директивах proxy_pass и fastcgi_pass.
upstream backend {
# Директива задаёт имя и параметры сервера. Обратите внимание, мы будем
# использовать имя "backend" в директиве proxy_pass
server 127.0.0.1:88;
}
server {
# Слушать 80 порт
listen 80;
# Использовать следующие хосты
server_name pyha.ru www.pyha.ru;
# Кодировка
#charset koi8-r;
# Лог доступа для конкретного виртуального хоста
#access_log logs/host.access.log main;
# Максимальный размер тела запроса клиента
client_max_body_size 101M;
# Разруливаем статику и динамку, смотрите описание ниже в этой статье!
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /home/pyha/pyha.ru;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://backend/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
# Адрес страницы 404-ой ошибки, далее все ошибки по аналогии
#error_page 404 /404.html;
# Аналогично 404, только при этом назначается псевдоним 50x.html для всех
# 50x-тых ошибок и далее перенаправляется все на "root"
error_page 500 502 503 504 /50x.html;
location = /50x.html {
# корневая директория
root /usr/local/www/nginx-dist;
}
}
}
После конфигурации необходимо перезагрузить Nginx

С помощью этих правил разруливаем запросы на отдачу статику и динамического контента
# Следующие расширения файлов (jpg, jpeg, gif, png, ico, css, bmp, swf и js) отдаются напрямую, без участия Apache.
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /home/pyha/pyha.ru;
}
# htaccess и htpasswd не отдаем
location ~ /\.ht {
deny all;
}
# Все остальное разруливает бекенд (Apache)
location / {
# Адрес бекенда. Параметры бекенда перечислили в директиве "upstream" (см. выше в статье)
proxy_pass http://backend/;
# Заголовок Host
proxy_set_header Host $host;
# Заголовок X-Real-IP
proxy_set_header X-Real-IP $remote_addr;
# Заголовок X-Forwarded-For
proxy_set_header X-Forwarded-For $remote_addr;
# Директива задаёт таймаут для соединения с проксированным сервером, сек
proxy_connect_timeout 120;
# Директива задаёт таймаут при передаче запроса проксированному серверу, сек
proxy_send_timeout 120;
# Директива задаёт таймаут при чтении ответа проксированного сервера, сек
proxy_read_timeout 180;
}
Настройка Apache
Редактируем файл /etc/httpd/conf/httpd.conf
Listen 88
Тоже самое делаем и в httpd-vhosts.conf для ваших хостов.
