Nginx, sitio equivocado servido

Nginx, sitio equivocado servido

Tengo mi sitio en la IP 1.2.3.4

En mi proveedor de dominio tengo onesite.com y anothersite.com apuntando a 1.2.3.4

Con Nginx tengo dos sitios configurados:

server {
    listen 1.2.3.4:80;
    server_name www.oneserver.com;
    rewrite ^(.*) http://onserver.com$1 permanent;
}

server {
    listen 1.2.3.4:80;
    server_name onserver.com;

    location / {
        fastcgi_pass 127.0.0.1:8878;

    [..]

Y:

server {
    listen 1.2.3.4:80;
    server_name myapp.anotherserver.com;

    location / {
        fastcgi_pass unix:/tmp/myapp.sock;

    [..]

Cuando accedo a myapp.anotherserver.com me redirigen a oneserver.com

¿Alguna ayuda?

Respuesta1

Como user186340se señaló, su fragmento de configuración se ve bien y el acceso myapp.anotherserver.comen el puerto 80debe realizarse en el tercer bloque que proporcionó. Si no funciona como usted describe, puede ser porque no está cargado.

  1. Asegúrese de que toda la configuración que mostró aquí haya sido encontrada/cargada por nginx
  2. Úselo nginx -tpara validar su configuración.
  3. Supervise su registro de errores cuando envíe unHUPseñalal proceso maestro de nginx para detectar cualquier mensaje de error que aparezca
  4. Si está utilizando nginx v1.9.2+, es posible que desee utilizarnginx -Tpara volcar la configuración cargada a la salida estándar

Si todo lo siguiente estuvo bien, probablemente modificó la configuración mostrada en comparación con la que usa efectivamente.

Respuesta2

El problema es que Nginx elige el servidor predeterminado y lo sirve a cualquier solicitud sin un servidor definido explícitamente. Mi solución es definir un servidor predeterminado que no haga nada.

# This just prevents Nginx picking a random default server if it doesn't know which
# server block to send a request to
server {
    # You can add 443/ssl if you need to
    listen      80 default_server; 
    server_name _;

    access_log off; log_not_found off;

    # "I'm a teapot", effectively "go away" https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error
    # Code 403 (forbidden), 410 (gone) or 501 (not implemented) is probably a better choice https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error
    return 418; 
}

información relacionada