9
我正在嘗試創建一個nginx conf文件,其中有很少的重複。我使用nginx的爲靜態文件,以及它代理404或PHP內容到指定的位置@varnish:如何讓多個位置塊使用相同的命名@location
location @varnish {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass http://localhost:6081;
proxy_set_header Request-URI $request_uri;
}
對於「標準」的情況,即nginx的要檢查,看它是否有一個文件,然後通過通過到後端,以下工作正常:但是
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
access_log off;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
expires max;
open_file_cache_valid 120m;
try_files $uri @varnish;
}
,對於PHP,我甚至不希望其嘗試的文件,它應該只是立即將請求重定向到@varnish:
location ~ \.php$ {
rewrite . @varnish last;
}
但是,這似乎不起作用。讓兩個單獨的幾乎相同的塊(一個用於@backend,另一個用於php)引用相同的代理似乎是一種痛苦,並且是人類可以忘記將某個東西放在一個而不是另一箇中的問題。
工作就像一個魅力! – shrikeh