Welcome! Log In Create A New Profile

Advanced

proxy_pass -> upstream -> apache virtual host

Posted by sailormax 
proxy_pass -> upstream -> apache virtual host
October 15, 2011 02:05PM
Пытаюсь сконфигурировать nginx так, чтобы при изменении настроек apache, nginx всё подхватывал (чтобы новые хосты требовалось прописывать только в одном месте - у apache). Для этого написал скрипт, который парсит настройки apache и создает аналог для nginx. В результате получилась конструкция типа:
~~~~~~~~~~~~~~~~~~~~~~~~~
nginx.conf:
upstream backend { server 127.0.0.1:8080; } # для потенциальных дополнительных серверов
include vhosts/*.conf;

vhosts/apache2nginx_vhosts.conf:
# перечисляются все хосты apache по типу:
server
{
listen [my_ip]:80;
server_name foo.com www.foo.com;
location / { include vhosts/apache_proxy.subconf; }
}

vhosts/apache_proxy.subconf:
# стандартные настройки proxy на apache
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_pass http://backend;
~~~~~~~~~~~~~~~~~

Проблема в том, что Apache как будто не получает должным образом Host. Все запросы обрабатываются как будто обращение идет по IP, а не по имени сайта... Хотя если обратиться к несуществующей директории выдает:
~~~~~
Not Found
The requested URL /foo/ was not found on this server.
Apache Server at my_host.com Port 80
~~~~~

При этом если писать "proxy_pass http://my_host:8080", Apache обрабатывает корректно, по имени хоста.
Выходит что "proxy_set_header Host $host;" не помогает. Есть идеи почему?

спасибо.
Re: proxy_pass -> upstream -> apache virtual host
October 16, 2011 08:36AM
Похоже обнаружил проблему: у Apache все домены завязаны на конкретных IP "<VirtualHost [host_ip]:80>", а я в nginx всех проксирую на 127.0.0.1:80...

Теперь вопрос не по теме, но может кто знает: сервак у меня под Plesk'ом. Есть ли в нём возможность настроить несколько IP на 1 домен, чтобы 127.0.0.1 все прописать?
Re: proxy_pass -> upstream -> apache virtual host
October 16, 2011 12:57PM
Насколько я помню Plesk, можно завязать много доменов на один IP но никак не наоборот. Что мешает вам сделать тоже самое через SSH?
Re: proxy_pass -> upstream -> apache virtual host
October 17, 2011 06:25AM
Сервак управляется через Plesk => любое изменение перепишет конфиги Apache в соответствии с настройками в Plesk => я потеряю все свои ручные правки.
Лучше найти способ указать в самом Plesk'e *:80 или несколько IP на домен, либо изменить свой скрипт импорта настроек Apache, но уже без upstream...
Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 308
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready