2016-01-26 81 views
0

我正在用try_files和proxy_pass(或別名)組合運行。Nginx Proxy_pass try_files掉到位置處理程序

當前配置:

location /staticsrv { 
    alias /var/www/static/trunk/; 
    #proxy_pass http://static.localtest.nl/; 
} 
location ~ ^/staticsrv/images/gallery/(.*)$ { 
    try_files $uri @img_proxy; 
} 
location @img_proxy { 
    rewrite ^(.*)$ /index.php/?c=media&m=index&imag=$uri; 
} 

但是每一個,因爲它不存在,它就會降到重寫規則文件。 有沒有一個「技巧」(閱讀正確的配置)來解決我的不幸?或者它是不可能的?兩個域最終都將位於同一臺服務器上,因此我們可以使用別名和proxy_pass。

在此先感謝

回答

0

location ~ ^/staticsrv/images/gallery/(.*)$需要rootalias來構建try_files嘗試本地路徑。此外,你不一定需要一個正則表達式的位置:

location /staticsrv/images/gallery/ { 
    alias /var/www/static/trunk/images/gallery/; 
    try_files $uri @img_proxy; 
} 
location @img_proxy { 
    rewrite^/index.php/?c=media&m=index&imag=$uri last; 
} 

proxy_pass不會try_files作爲一個涉及遠程內容和其他與本地內容合作。

我儘量避免因this open bug同一位置塊使用aliastry_files

一個可能的解決辦法是使用另一個中間 URI的文檔根緊密匹配:

location /staticsrv/images/gallery/ { 
    rewrite ^/staticsrv(.+)$ /trunk$1 last; 
} 
location /trunk { 
    internal; 
    root /var/www/static; 
    try_files $uri @img_proxy; 
} 
location @img_proxy { 
    rewrite^/index.php/?c=media&m=index&imag=$uri last; 
}