Во первых, nginx должен слушать порт 80 (можно только внешний ip), а apache другой, например 81 (можно только ip 127.0.0.1).
Дальше, чтобы всё хорошо работало - и в nginx, и в apache должны быть настроены те-же сайты отдельно - так не будет путаницы, и можно будет вносить изменения настроек для каждого сайта отдельно.
Соответственно настройки:
Выносим все настройки reverse-proxy nginx в отдельный файл:
>>> /etc/nginx/proxy.conf >>>
# настройка проксирования
proxy_redirect off;
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_cache_key "$scheme://$host$request_uri $do_not_cache";
proxy_cache cache;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
>>> /etc/nginx/sites-available/site1.ru.conf >>>
server {
listen 123.123.123.123:80;
server_name www.site1.ru site1.ru;
access_log /var/log/nginx/site1.ru_nginx_access_log;
error_log /var/log/nginx/site1.ru_nginx_error_log;
location / {
include /etc/nginx/proxy.conf;
proxy_pass http://site1.ru:81;
}
#Статику отдаём напрямик
location ~* ^.+\.(jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mp3)$ {
expires 30d;
root /home/site1.ru/public_html;}
# Запрещаем открытие .htaccess через браузер
location ~ /\.ht {deny all;}
}
>>> /etc/nginx/sites-available/site2.ru.conf >>>
server {
listen 123.123.123.123:80;
server_name www.site2.ru site2.ru;
access_log /var/log/nginx/site2.ru_nginx_access_log;
error_log /var/log/nginx/site2.ru_nginx_error_log;
location / {
include /etc/nginx/proxy.conf;
proxy_pass http://site2.ru:81;
}
#Статику отдаём напрямик
location ~* ^.+\.(jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mp3)$ {
expires 30d;
root /home/site2.ru/public_html;}
# Запрещаем открытие .htaccess через браузер
location ~ /\.ht {deny all;}
}
>>> /etc/apache2/sites-available/site1.ru.conf >>>
<VirtualHost 127.0.0.1:81>
ServerName site1.ru
ServerAlias www.site1.ru
DocumentRoot /home/site1.ru/public_html
...
</VirtualHost>
>>> /etc/apache2/sites-available/site2.ru.conf >>>
<VirtualHost 127.0.0.1:81>
ServerName site2.ru
ServerAlias www.site2.ru
DocumentRoot /home/site2.ru/public_html
...
</VirtualHost>