問題
最近發現經常有客戶端出現 url 復制兩次訪問的情況,導致觸發了 waf 無法訪問 403。所以就想着怎么處理,解決這個問題。
當用戶請求:https://www.test.com/https://www.test.com/
或者https://www.test.com/https://www.test.com
會出問題
原因
開啟壓縮之后,nginx 的 uri 會默認把雙斜桿//
自動合並為單斜桿/
方法一:merge_slashes
啟用或禁用將URI中的兩個或多個相鄰斜杠壓縮為單個斜杠。處於安全考慮,一般不關閉。
merge_slashes off;
方法二:
if ( $uri ~ "http:(/)localhost(/|)$" ) {
rewrite ^ $scheme://$host:$server_port/ break;
}
方法三:
if ( $uri ~ "http:/(.*)localhost(/|)$" ) {
rewrite ^ $scheme://$host:$server_port/ break;
}
參考
http://nginx.org/en/docs/http/ngx_http_core_module.html#merge_slashes