nginx try_files指令判斷文件是否存在實(shí)例
現(xiàn)在有這樣一個(gè)需求,網(wǎng)站根目錄下有靜態(tài)文件,static目錄下也有靜態(tài)文件,static目錄下的靜態(tài)文件是程序批量生成的,我想讓nginx在地址不變的前提下優(yōu)先使用static目錄里面的文件,如果不存在再使用根目錄下的靜態(tài)文件,比如訪問(wèn)首頁(yè)http://example.com/index.html則nginx返回/static/index.html,如果不存在返回/index.html。
經(jīng)過(guò)一番研究可以用if指令實(shí)現(xiàn),關(guān)鍵配置如下,這條配置需要放到靠前的位置
if (-e $document_root/static$request_uri) {
rewrite ^/(.*)$ /static/$1 break;
break;
}
這里有兩點(diǎn)需要注意:
nginx變量默認(rèn)應(yīng)該開(kāi)頭有反斜線而結(jié)尾沒(méi)有。
nginx字符串和變量可以直接連接,如果可能有歧義可以花括號(hào)括起變量名稱(chēng),整個(gè)字符串必須加雙引號(hào)
是用這種方式有一個(gè)缺點(diǎn),index指令指定的文件不會(huì)起作用,比如訪問(wèn)http://example.com/就會(huì)404,必須顯示的指定文件名才行http://example.com/index.html。可以用rewrite修復(fù),但是感覺(jué)不爽,在nginx陷阱頁(yè)面突然發(fā)現(xiàn)一個(gè)針對(duì)性的指令try_files
set $static "/static";
try_files $static$uri $static$uri/index.html /index.php;
參考頁(yè)面
http://wiki.nginx.org/Pitfalls
后來(lái)發(fā)現(xiàn)$uri變量本身會(huì)自動(dòng)添加index.html后綴,經(jīng)過(guò)實(shí)驗(yàn)這樣寫(xiě)也是可以的
if (-e "${document_root}/static${uri}") {
rewrite ^/(.*)$ /static/$uri break;
}
if (-e $request_filename) {
break;
}
因?yàn)樽詈蟛淮嬖诘奈募紝?xiě)到index.php去了所以上面rewrite之后需要再判斷一次文件存在。
相關(guān)文章
在Nginx用htpasswd對(duì)網(wǎng)站進(jìn)行密碼保護(hù)的設(shè)置方法
很多時(shí)候我們需要對(duì)一些網(wǎng)站進(jìn)行密碼保護(hù),比如團(tuán)隊(duì)內(nèi)部的站點(diǎn)、demo站點(diǎn)等等。這里所說(shuō)的密碼保護(hù)是服務(wù)器級(jí)的,并非網(wǎng)站應(yīng)用層的注冊(cè)登錄那一套,而是利用服務(wù)器配置和htpasswd文件來(lái)實(shí)現(xiàn)訪問(wèn)的密碼驗(yàn)證2013-06-06nginx日志導(dǎo)入elasticsearch的方法示例
這篇文章主要介紹了nginx日志導(dǎo)入elasticsearch的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Nginx反向代理多域名的HTTP和HTTPS服務(wù)的實(shí)現(xiàn)
這篇文章主要介紹了Nginx反向代理多域名的HTTP和HTTPS服務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06nginx反向代理用做內(nèi)網(wǎng)域名轉(zhuǎn)發(fā)
這篇文章主要為大家詳細(xì)介紹了nginx反向代理用做內(nèi)網(wǎng)域名轉(zhuǎn)發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Nginx服務(wù)器中強(qiáng)制使用緩存的配置及緩存優(yōu)先級(jí)的講解
這篇文章主要介紹了Nginx服務(wù)器中強(qiáng)制使用緩存的配置及緩存優(yōu)先級(jí)的講解,一定程度上可以幫助大家解決Nginx不緩存或緩存失效的問(wèn)題,需要的朋友可以參考下2016-01-01