nginx try_files指令判斷文件是否存在實(shí)例
現(xiàn)在有這樣一個(gè)需求,網(wǎng)站根目錄下有靜態(tài)文件,static目錄下也有靜態(tài)文件,static目錄下的靜態(tài)文件是程序批量生成的,我想讓nginx在地址不變的前提下優(yōu)先使用static目錄里面的文件,如果不存在再使用根目錄下的靜態(tài)文件,比如訪(fǎng)問(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)頭有反斜線(xiàn)而結(jié)尾沒(méi)有。
nginx字符串和變量可以直接連接,如果可能有歧義可以花括號(hào)括起變量名稱(chēng),整個(gè)字符串必須加雙引號(hào)
是用這種方式有一個(gè)缺點(diǎn),index指令指定的文件不會(huì)起作用,比如訪(fǎng)問(wèn)http://example.com/就會(huì)404,必須顯示的指定文件名才行http://example.com/index.html??梢杂胷ewrite修復(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服務(wù)器綁定域名和設(shè)置根目錄的方法
這篇文章主要介紹了詳解nginx服務(wù)器綁定域名和設(shè)置根目錄的方法,nginx服務(wù)器綁定域名以及設(shè)置根目錄非常方便,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Nginx ssi合并頁(yè)面的具體實(shí)現(xiàn)
nginx的ssi模塊是一種類(lèi)似于ASP的基于服務(wù)器的網(wǎng)頁(yè)制作技術(shù),本文主要介紹了Nginx ssi合并頁(yè)面的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
一文了解nginx HTTP安全響應(yīng)問(wèn)題
一些網(wǎng)站系統(tǒng)會(huì)經(jīng)常遭到各類(lèi)XSS攻擊、點(diǎn)劫持等,從而造成重要信息的泄露以及服務(wù)器安全問(wèn)題,本文就來(lái)介紹一下,感興趣的可以了解一下2023-11-11
Nginx 實(shí)現(xiàn)會(huì)話(huà)保持的方式配置小結(jié)
本文主要介紹了在NGINX中實(shí)現(xiàn)會(huì)話(huà)保持的幾種常見(jiàn)方法,包括IP哈希、基于Cookie的會(huì)話(huà)保持、基于URL參數(shù)的會(huì)話(huà)保持及使用第三方的nginx-sticky-module模塊,感興趣的可以了解一下2024-11-11
阿里云國(guó)際版使用Nginx作為HTTPS轉(zhuǎn)發(fā)代理服務(wù)器的處理方法
本文介紹了使用NGINX作為HTTPS流量轉(zhuǎn)發(fā)代理的兩種方法。它總結(jié)了NGINX使用HTTP?CONNECT隧道和NGINX流充當(dāng)HTTPS轉(zhuǎn)發(fā)代理的解決方案的原則,環(huán)境構(gòu)建要求,應(yīng)用場(chǎng)景和關(guān)鍵問(wèn)題2022-05-05
Nginx解決Http慢攻擊(Slow HTTP Attack)的方法
緩慢的HTTP拒絕服務(wù)攻擊是一種專(zhuān)門(mén)針對(duì)于Web的應(yīng)用層拒絕服務(wù)攻擊,本文給大家介紹了Nginx解決Http慢攻擊(Slow HTTP Attack)的方法,需要的朋友可以參考下2024-02-02
Nginx下WordPress鏈接(url偽靜態(tài))301永久重定向?qū)崿F(xiàn)方法
在幾個(gè)blog程序中折騰的結(jié)果,導(dǎo)致url連續(xù)二次變化。這是第三次了。 nginx 通過(guò)rewrite 使用 permanent; 參數(shù) 成301永久url重定向2012-09-09

