Настройка Nginx и Apache, для отдачи запросов к PHP apache

06.02.2010 от admin 0

В общем это вторая часть статьи о настройке апача и nginx. В данной статье мы настроим эту связку, так, что бы апач получал только запросы к php, а все остальное делал наш nginx.

Как же отдавать Apache ТОЛЬКО запросы к php? Есть несколько вариантов как это сделать, начнем с того, который описывается в офф документации.

server {
listen server.example.com;
server_name server.example.com

location / {
proxy_pass http://127.0.0.1/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

location ~* .(jpg|jpeg|gif|html)$ {
root /spool/www;
access_log off;
expires 30d;
}
}

В данном примере перечисляются расширения файлов которые будет обрабатывать Nginx, а все остальное будет уходить через прокси

proxy_pass http://127.0.0.1/;

Но писать вручную все расширения долго..хм да и все написать проблематично, поэтому наш конфиг Nginx будет выглядеть так:

server {
listen server.example.com;
server_name server.example.com

location / {
proxy_pass http://127.0.0.1/;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr

}

location ~* .(?!(php|php5|phps)$)[^.]*[^/]$ {
root /usr/local/www/one.example.com/;
}

Таким образов обработка всех файлов которые НЕ оканчиваются на .php,.php5,phps или адрес НЕ заканчивается на «/ » отдается NGINX, а все остальное обрабатывает apache.

Так же есть и еще один вариант:

server {
listen one.example.com;
server_name one.example.com

location / {
root /usr/local/www/server.example.com/;
index index.php index.html index.htm;
}

location ~ .php {
proxy_pass http://127.0.0.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}