Назад | Перейти на главную страницу

Маршрутизация обратного прокси-сервера Multisite Nginx в Apache

Я запускаю сервер Ubuntu 10.04 nginx с обратным прокси-сервером для apache (для запуска мониторинга munin).

Это отрывок из моего файла сайта Apache по умолчанию:

<VirtualHost *:8090>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/cache/munin/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

И отрывок из моей example.com Файл конфигурации nginx:

location /stats {
    proxy_pass              http://127.0.0.1:8090/;
    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_buffers           32 4k;
}

Всякий раз, когда я иду в example.com/stats, nginx указывает на apache через порт 8090, а apache обслуживает веб-каталог munin. Отлично работает.

Но что, если я захочу добавить еще один домен, скажем example.org? У меня был бы другой файл конфигурации nginx, но как бы сделать apache DocumentRoot что-то другое? Поскольку запросы поступают в apache из nginx через порт localhost 8090, как apache может определить, с какого сайта поступает запрос и с какого? DocumentRoot/ конфигурация для обслуживания?

Я предполагаю, что мне придется использовать заголовки, установленные nginx ($host; или $proxy_add_x_forwarded_for; переменные?) в apache как-то ...

Я запускаю несколько доменов в одном файле nginx.conf. Попробуй это:

server {
    listen xxx.xxx.xxx.xxx:8090;
    server_name example.org;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    location / {
        proxy_pass http://127.0.0.1:8090;
    }
}

server {
    listen xxx.xxx.xxx.xxx:8090;
    server_name example.com;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    location / {
        proxy_pass http://127.0.0.1:8090;
    }
}

затем добавьте две виртуальные конфигурации в свой apache

<VirtualHost *:8090>
ServerName example.org
ServerAdmin webmaster@localhost

DocumentRoot /var/cache/munin/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
</VirtualHost>

<VirtualHost *:8090>
ServerName example.com
ServerAdmin webmaster@localhost

DocumentRoot /var/cache/munin/www2
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
</VirtualHost>