好久沒接觸nginx了,今天幫同事解決一個客戶的問題,順便記錄下;
version : nginx-1.6.2
問題描述:
客戶的files.shtml里面include一個網站的頭部文件( <!–# include file=”../../woqu.htm”–>),采用的是相對路徑,這樣的寫法在apache里面可以正常訪問,但是在nginx里面不能正常加載
日志上提示:
unsafe URI "../../woqu.html" was detected while sending response to client
解決方法:
修改源碼重新編譯nginx
vi src/http/modules/ngx_http_ssi_filter_module.c
注視掉下面這個判斷:
/*
if (ngx_http_parse_unsafe_uri(r, uri, &args, &flags) != NGX_OK) {
return NGX_HTTP_SSI_ERROR;
}
*/
然后安裝三部曲,reload一下就搞定了。
順帶說下,部分人在nginx里面為了安全會添加規則禁止訪問隱藏文件(點 .開頭),如:
location ~ (.*\.sh?$|/\.|.*\.log?$)
{
return 403;
}
然后就會跟我們上面改的起沖突,因為include ../../test.html 這樣的時候,其實也是正常請求這樣的一個URL,“..”也是點開頭,然后你就會看到一個403的頁面,好惡心。