Solicitações de encaminhamento Nginx para o host virtual Apache / Plesk incorreto

2
server {
    listen       81;
    server_name  example.com localhost direct1.example.com www.example.com admin.example.com forum.example.com;

    location /media/ {
        root /var/www/vhosts/example.com/html;
    }

    error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location / {
        proxy_set_header Host $host;
        proxy_set_header Connection Close;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        root /var/www/vhosts/example.com/html;
        proxy_pass   http://127.0.0.1:80;
    }
}

Isto é o que eu tenho em nginx / defaults.conf. O servidor está atualmente usando o Apache fine, e o Plesk, que parece gerenciar vhosts sozinho (de alguma forma).

Todas as solicitações para example.com:81/media/image.jpg funcionam bem, mas example.com:81 usa um vhost incorreto.

Eu não tenho 100% de certeza de como a situação do vhost funciona com o Plesk, mas ele foi instalado e o vhost padrão é server1.example.com , e não importa o quanto eu esteja mexendo com as configurações de proxy, não consigo para usar o example.com vhost.

edit adicionou um ; à linha raiz na localização. Estava faltando, eu tentei adicionar, mas ainda sem sorte.

update adicionou ServerName "example.com" a /etc/httpd/conf.d/zz010_psa_httpd.conf . Agora, sob status de apache, ele lista o vhost como example.com, mas ainda "usa" server1.example.com. Boo.

Parece também que está usando o DocumentRoot do httpd.conf principal do apache e não está usando o host virtual adequado.

    
por paimoe 02.12.2011 / 06:50

1 resposta

0

Dos documentos nginx em proxy_pass :

Note that the HTTP Host header is not forwarded, but is set based on the proxy_pass statement.

Isso significa que sua linha proxy_set_header Host $host; não tem efeito. O cabeçalho real do host passado para o Apache será Host: 127.0.0.1 de acordo com a instrução proxy_pass .

Eu recomendo essa seção location / como proxy, conforme descrito por você:

location / {
    proxy_set_header Connection Close;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://example.com:80;
}
    
por 02.12.2011 / 08:39