nginx 反向代理問題小結php
location /Autopsnginx
{web
proxy_pass http://a.test.com;api
}服務器
① 循環跳轉,nginx條件判斷跳出代理
在nginx中配置好,死活都沒法跳轉。日誌
經過F12查看,其實已經跳轉過去了,可是接口在認證的地方循環在跳轉。接口
應該是登錄接口路由有問題,因爲我請求的對方接口是直接訪問,無需路由。 因此的添加條件判斷,請求完接口以後,直接退出。(此處應該去檢查登錄路由,因爲時間關係,直接採起迴避的方法。)路由
匹配到/Autops/api接口下的任何請求,請求完畢以後直接break,不往下請求。get
location /Autops/api/{
if (-e $document_root/Autops/api/dbuser/$request_uri) {
rewrite ^/(.*)$ /Autops/api/dbuser/$1 break;
break;
}
}
location / {
try_files $uri $uri/ /Autops/web/index.php?$args;
}
順便了解下 try_files 的做用: 按照順序請求如上地址,若是不存在或匹配不到會訪問最後一個參數。也便是改寫參數。
② 請求跳轉是不跳轉非index文件
原服務器地址: http://b.test.com/Autops/api/dbuser/dbuser.php
實際跳轉的是:http://a.test.com/Autops/api/dbuser/dbuser.php
實際的結果是 怎麼都沒法跳轉 ,可是實際的訪問接口是能夠訪問到。經過查看access日誌,根本沒有跳轉過去,當你不加文件的時候是能夠正常跳轉過去的,也就是
原服務器地址: http://b.test.com/Autops/api/dbuser/
實際跳轉的是:http://a.test.com/Autops/api/dbuser/
能夠正常跳轉,也就是當你直接訪問接口的文件,即便你加上了反向代理,也是不會跳轉的,而是直接訪問當前服務器的應用。(低級錯誤!!!!)