Roteamento de proxy reverso multisite Nginx para o Apache

2

Estou executando um servidor nginx Ubuntu 10.04, com um proxy reverso para o apache (para executar o monitoramento munin).

Este é um trecho do meu arquivo de site padrão do Apache:

<VirtualHost *:8090>
    ServerAdmin webmaster@localhost

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

E um excerto do meu arquivo de configuração nginx example.com :

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;
}

Sempre que vou para example.com/stats , o nginx aponta para o apache pela porta 8090 e o apache exibe o diretório web munin. Isso funciona muito bem.

Mas e se eu quisesse adicionar outro domínio, digamos exemplo.org ? Eu teria outro arquivo de configuração nginx, mas como eu faria o DocumentRoot do apache? algo mais? Como os pedidos estão entrando no apache de nginx através da porta local 8090, como o apache pode determinar de qual site a solicitação está vindo, e qual DocumentRoot / configuration para servi-la?

Estou assumindo que terei que usar os cabeçalhos definidos pelo nginx ( $host; ou $proxy_add_x_forwarded_for; variables?) no apache de alguma forma ...

    
por mr_schlomo 02.01.2012 / 04:08

1 resposta

3

Eu rodei vários domínios em um arquivo nginx.conf. Tente isto:

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;
    }
}

depois adicione duas configurações virtuais no seu apache

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

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

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

DocumentRoot /var/cache/munin/www2
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
    
por 02.01.2012 / 12:25