Tengo nginx como LB. Y los 2 Apaches como servidores web. Digamos que tengo diferentes dominios:
- www.ejemplo.com
- pago.ejemplo.com
Ambos dominios estarán en los mismos 2 servidores Apache. Pero ofcoz bajo los diferentes directorios. Y con los diferentes VHost
archivos en el archivo Apache vhost.
Como algo como el siguiente diseño:
Nginx
|
-------------
| |
Apache Apache
A continuación se muestra mi archivo Nginx .conf actual que no funciona para el segundo dominio (checkout.example.com).
De 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 de los 2 servidores ApachemismoArchivos 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>
Pero cada vez que navego por eso (http://checkout.example.com), elEl dominio todavía apareceen el navegador ..pero con el contenido de (www.example.com), lo cual es totalmente erróneo.
¿Qué hice mal por favor?
Respuesta1
Casi siempre debes configurar Host
el encabezado. De lo contrario, nginx vuelve al valor predeterminado proxy_set_header Host $proxy_host;
, lo que en su caso sería serverpool
inútil para Apache.
Verhttp://nginx.org/r/proxy_set_headeryhttp://nginx.org/r/proxy_passpara detalles.
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;
}
}
Respuesta2
También deberá enviar el encabezado HOST: a la IP de su servidor ascendente
Este artículo responde plenamente a la pregunta.
Haga que nginx pase el nombre de host del canal ascendente cuando se realiza el proxy inverso
También tu configuración de nginx debería verse así
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;
}
}