2012-09-15 83 views
2

我試圖讓nginx爲特定子目錄下的請求提供靜態文件,而所有其他請求都是反向代理的,但沒有運氣(獲得404s)。例如,我想要http://domain.com/project/static/index.htmlhttp://domain.com/project/static/subdir/file2.html分別映射到/var/www/domain.com/htdocs/index.html和/var/www/domain.com/htdocs/subdir/file2.html。對於靜態文件和反向代理的Nginx映射

所有其他請求應該是反向代理的。例如,http://domain.com/project/thisWillBeProxied.htmlhttp://domain.com/project/subdir/soWillThis.html

這是我主動nginx的輪廓

server { 
    listen 8080; 
    server_name domain.com; 
    access_log /var/www/domain.com/log/nginx.access.log; 
    error_log /var/www/domain.com/log/nginx_error.log debug; 

    location/{ 
      proxy_pass   http://reverse-proxy-host/; 
    } 

    location ^~ /project/static/ { 
      alias /var/www/domain.com/htdocs; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
      root /var/www/nginx-default; 
    } 
} 

回答

1

,如果您看了error log,你會立刻明白是什麼問題。但你沒有。 =(

你的配置:。

location ^~ /project/static/ { 
    alias /var/www/domain.com/htdocs; 
} 

這不正是你寫的東西它取代/project/static/在你的URI的文件路徑/var/www/domain.com/htdocs所以,如果請求看起來像http://domain.com/project/static/index.html然後nginx的將嘗試打開/var/www/domain.com/htdocsindex.html我假設你不想成爲/var/www/domain.com/htdocsindex.html,但你想爲/var/www/domain.com/htdocs/index.html那麼你應該這樣寫:

location ^~ /project/static/ { 
    alias /var/www/domain.com/htdocs/; 
} 

Documentation