Настройка Nginx и Apache, для отдачи запросов к PHP apache
06.02.2010В общем это вторая часть статьи о настройке апача и nginx. В данной статье мы настроим эту связку, так, что бы апач получал только запросы к php, а все остальное делал наш nginx.
Как же отдавать Apache ТОЛЬКО запросы к php? Есть несколько вариантов как это сделать, начнем с того, который описывается в офф документации.
server {
listen server.example.com;
server_name server.example.comlocation / {
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.comlocation / {
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.comlocation / {
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;
}
}