nginx siempre envía solicitudes a Apache local

nginx siempre envía solicitudes a Apache local

Estoy ejecutando en el mismo servidor Apache (puerto 81) y NGINX (puerto 80). Para www.example.com tengo lo siguiente en el archivo de configuración de NGINX.

El problema es que cuando Apache se inicia en este servidor, TODAS las solicitudes de www.example.com van al servidor Apache en el puerto 81. Esto no está configurado en el nivel ascendente y www.example.com tampoco está configurado en la instancia local de Apache. entonces errores por todas partes.

No quiero que esto sea local sino solo externo como se define en el sentido ascendente.

Cuando detengo Apache, se utiliza el flujo ascendente y la solicitud de nginx va a los servidores definidos en el flujo ascendente, cuando inicio Apache nuevamente, todas las solicitudes se enrutan localmente a Apache.

Entonces, ¿cómo puedo evitar que las solicitudes vayan a Apache cuando está cargado y dejar que nginx siempre use el flujo ascendente definido?

upstream mainserver {
    server w1.externalserver.nl;
    server w2.externalserver.nl;
}

server {
listen 80;

server_name www.example.com;

location / {
    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_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://mainserver;

}
}

Respuesta1

Sugiero definir el número de puerto en las configuraciones de nginx:

upstream mainserver {
    server w1.externalserver.nl:81;
    server w2.externalserver.nl:81;
}

Y verifique que Apache escuche en su puerto correcto. Para instalaciones de Ubuntu:apache2.confopuertos.conf(verifique este archivo también, es posible que el contenido reescriba la configuración):

Listen 127.0.0.1:81

Actualización 1

+-------------+
| server 1    | <------- http request :80
|             |
| nginx ----+ | -------> redirect to server 2 (You want)
|           | |
| Apache <--+ | internal redirect to local Apache (problem place)
+-------------+

1). En el servidor 1 ejecute Apache y nginx. curl -I http://example.com:80 Marque el campo "Servidor" en respuesta. Si hay Apache presente, verifique cuidadosamente todas sus configuraciones: apache2.conf, ports.conf, configuraciones de hosts virtuales; en algún lugar se menciona el puerto 80 y Apache "reescribe" nginx "escucha".

2). Inténtalo proxy_pass http://mainserver;... proxy_pass mainserver;sin protocolo.

información relacionada