2012-10-13 9 views
7

Quiero que nginx busque primero en mi host local el archivo y en un error 404 debería buscar en el servidor 1.1.1.1.Nginx proxy_next_upstream no funciona

Puedo buscar el archivo que se encuentra en el host local, pero no se puede obtener desde el servidor 1.1.1.1.

server { 
    listen 80; 
    server_name localhost; 

    access_log /var/log/nginx/access.log main; 

    location /products/ { 
     proxy_next_upstream http_404; 

     root /var/foo; 
    } 
} 

server { 
    listen 80; 
    server_name 1.1.1.1; 
    location /products/ { 
     ######### 
    } 
} 

Supongo que proxy_next_upstream no está cambiando al servidor.

Cualquier ayuda sobre esto sería apreciada.

Respuesta

27

La directiva proxy_next_upstream es una directiva de configuración para controlar la re-solicitud de un grupo de upstream servers por un proxy_pass si la solicitud a uno de ellos falla. No tiene sentido sin proxy_pass y un bloque upstream definido. Es posible utilizarlo si proxy para múltiples servidores originales de esta forma:

upstream backends { 
    server 192.2.0.1; 
    server 192.2.0.2; 
    ... 
} 

server { 
    ... 

    location/{ 
     proxy_pass http://backends; 
     proxy_next_upstream error timeout http_404; 
    } 
} 

Si desea nginx para buscar un archivo en el disco, y si no es encontrado - petición de proxy a otro servidor, por ejemplo, se configura utilizando try_files repliegue en su lugar:

location/{ 
    root /path/to/root; 
    try_files $uri @fallback; 
} 

location @fallback { 
    proxy_pass http://... 
} 

Ver http://nginx.org/r/try_files para obtener más información sobre la directiva try_files.

+0

Muchas gracias Maxim Dounin ... funcionó !!!! – sorabh

+0

Si funcionó, podría firmarlo como respuesta – gipi

+0

Los casos de http_403 y http_404 nunca se consideran intentos fallidos. – Daniel