2010-09-13 3 views
0

J'essaie d'obtenir nginx à toujours proxy certaines demandes, même si un fichier statique existe. J'ai le travail de proxying bien, sauf nginx semble insister pour servir une version statique du fichier même si une directive de proxy a été déclarée. Donc, dans la configuration ci-dessous, si un fichier nommé "/siteroot/static/members/page.html" existait, il serait (incorrectement) servi directement au lieu d'être mandaté, mais si je supprime le fichier, la procuration se poursuit comme prévu. Comment puis-je forcer nginx à toujours utiliser un proxy?Nginx proxy_pass est ignoré si le fichier statique existe

Je suis en nginx 0.7.67, voici la config complète:

worker_processes 1; 

error_log logs/error.log; 
pid  logs/nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 
    include  mime.types; 
    default_type application/octet-stream; 

    access_log logs/access.log; 

    sendfile  on; 
    keepalive_timeout 65; 
    tcp_nodelay  on; 

    gzip on; 
    gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 
} 

server { 
    listen  80; 
    server_name .XXX.net .XXXnet.net; 
    server_name_in_redirect off; 

    location ^~ /members { 
      access_log logs/members-access.log; 
      proxy_pass http://127.0.0.1:5010; 
    } 

    location ^~ /search { 
      access_log logs/search-access.log; 
      proxy_pass http://127.0.0.1:5010; 
    } 

    location/{ 
      root /siteroot/static; 
    } 


    # redirect server error pages to the static page /50x.html 
    error_page 404 %(ROOT)s/web/XXX/public/404.html; 
    error_page 500 502 503 504 %(ROOT)s/web/XXX/public/50x.html; 
} 
+0

La requête se retrouve-t-elle dans le fichier 'members-access.log' ou est-elle redirigée vers' location/'? Normalement, une règle comme '^ ~ quelque chose 'aurait préséance sur'/'. – Wolph

+1

Aussi, je vote pour un passage à 'serverfault' car cela n'a rien à voir avec la programmation. – Wolph

+0

@WoLpH: il va dans l'accès des membres, peu importe comment servi. –

Répondre

1

Après avoir mis le débogage nginx, il se avère que nginx est correctement inverse mandatement à l'application back-end. C'est l'application Pylons principale qui sert le fichier statique tel quel au lieu d'exécuter un contrôleur. Nginx semble fonctionner correctement.