nginx 的 403 Forbidden errors 表示你在請(qǐng)求一個(gè)資源文件但是nginx不允許你查看。
403 Forbidden 只是一個(gè)HTTP狀態(tài)碼,像404,200一樣不是技術(shù)上的錯(cuò)誤。
哪些場(chǎng)景需要返回403狀態(tài)碼的場(chǎng)景?
1.網(wǎng)站禁止特定的用戶訪問(wèn)所有內(nèi)容,例:網(wǎng)站屏蔽某個(gè)ip訪問(wèn)。
2.訪問(wèn)禁止目錄瀏覽的目錄,例:設(shè)置autoindex off后訪問(wèn)目錄。
3.用戶訪問(wèn)只能被內(nèi)網(wǎng)訪問(wèn)的文件。
以上幾種常見(jiàn)的需要返回 403 Forbidden 的場(chǎng)景。
由于服務(wù)器端的錯(cuò)誤配置導(dǎo)致在不希望
nginx返回403時(shí)返回403 Forbidden。
1.權(quán)限配置不正確
這個(gè)是nginx出現(xiàn)403 forbidden最常見(jiàn)的原因。
為了保證文件能正確執(zhí)行,nginx既需要文件的讀權(quán)限,又需要文件所有父目錄的可執(zhí)行權(quán)限。
例如,當(dāng)訪問(wèn)/usr/local/nginx/html/image.jpg時(shí),nginx既需要image.jpg文件的可讀權(quán)限,也需要/,/usr,/usr/local,/usr/local/nginx,/usr/local/nginx/html的可以執(zhí)行權(quán)限。
解決辦法:設(shè)置所有父目錄為755權(quán)限,設(shè)置文件為644權(quán)限可以避免權(quán)限不正確。
2.目錄索引設(shè)置錯(cuò)誤(index指令配置)
網(wǎng)站根目錄不包含index指令設(shè)置的文件。
例如,運(yùn)行PHP的網(wǎng)站,通常像這樣配置index
index index.html index.htm index.php;
當(dāng)訪問(wèn)該網(wǎng)站的時(shí),nginx 會(huì)按照 index.html,index.htm ,index.php 的先后順序在根目錄中查找文件。如果這三個(gè)文件都不存在,那么nginx就會(huì)返回403 Forbidden。
如果index中不定義 index.php ,nginx直接返回403 Forbidden而不會(huì)去檢查index.php是否存在。
同樣對(duì)于如果運(yùn)行jsp, py時(shí)也需要添加index.jsp,index.py到目錄索引指令index中。