Eu tenho nginx como LB. E os 2 Apaches como servidores web. Digamos que eu tenha domínios diferentes:
- www.exemplo.com
- checkout.exemplo.com
Ambos os domínios estarão nos mesmos 2 servidores Apache. Mas ofcoz em diferentes diretórios. E com os diferentes VHost
arquivos no arquivo vhost do Apache.
Como algo como o design abaixo:
Nginx
|
-------------
| |
Apache Apache
Abaixo está meu arquivo Nginx .conf existente que não está funcionando para o segundo domínio (checkout.example.com).
Do NGINX (mysites.conf):
upstream serverpool {
server 1.2.3.101:80 weight=1;
server 1.2.3.102:80 weight=1;
}
server {
listen 80;
server_name www.example.com checkout.example.com;
location / {
proxy_pass http://serverpool;
}
}
De ambos os 2 servidores ApachemesmoArquivos Vhost (httpd.conf):
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html/www.example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName checkout.example.com
DocumentRoot /var/www/html/checkout.example.com/
</VirtualHost>
Mas sempre que eu navego nisso (http://checkout.example.com), oO domínio ainda apareceno navegador ..mas com o conteúdo de (www.example.com), o que está totalmente errado.
O que eu fiz de errado, por favor?
Responder1
Você quase sempre deve definir Host
o cabeçalho. Caso contrário, o nginx volta ao padrão, proxy_set_header Host $proxy_host;
o que no seu caso seria serverpool
inútil para o apache.
Verhttp://nginx.org/r/proxy_set_headerehttp://nginx.org/r/proxy_passpara detalhes.
upstream serverpool {
server 1.2.3.101:80 weight=1;
server 1.2.3.102:80 weight=1;
}
server {
listen 80;
server_name www.example.com checkout.example.com;
location / {
proxy_pass http://serverpool;
proxy_set_header Host $host;
}
}
Responder2
você precisará enviar o cabeçalho HOST: para o IP do seu servidor upstream também
este artigo está respondendo totalmente à questão
Faça com que o nginx passe o nome do host do upstream durante o proxy reverso
também sua configuração do nginx deve ser assim
upstream serverpool {
server 1.2.3.101:80 weight=1;
server 1.2.3.102:80 weight=1;
}
server {
listen 80;
server_name www.example.com checkout.example.com;
location / {
proxy_pass http://serverpool;
proxy_set_header Host $host;
}
}