一些用戶的網站使用nginx,在添加了反向代碼之后,沒有效,感覺和不添加的時候一樣。
經過我工作室頂尖技術人員的排查,發現問題原因是rewrite的優先級高于反向代理
并且某些網站程序的偽靜態規則,直接攔截了所有匹配導致。如 thinkphp,zblog,小旋風站群 等!
解決辦法就是,給偽靜態規則加上一個條件,把反向目錄排除。
以下以thinkphp的偽靜態規則做舉例,thinkphp的默認偽靜態規則如下:
------------------------------------------------------
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}------------------------------------------------------
注意紅色部分,把 ^(.*) 改成 ^/(?!mulu888)(.*) ,其中 mulu888改成自己的反代目錄,如有多個用|分開: ^/(?!mulu888|mulu999)(.*)
修改后的代碼就變成以下:
------------------------------------------------------
if (!-e $request_filename) {
rewrite ^/(?!mulu888)(.*)$ /index.php?s=$1 last;
break;
}------------------------------------------------------
