解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時斜線‘/‘導(dǎo)致404問題
nginx location配置proxy_pass轉(zhuǎn)發(fā)時斜線‘/‘導(dǎo)致404
在Nginx location通用匹配規(guī)則中配置proxy_pass轉(zhuǎn)發(fā)時
假設(shè)有如下location配置:
location /test {
proxy_pass http://localhost:8080/test;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto "https";
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
}如果我請求 http://localhost/test/a.jsp,則會將url根據(jù)匹配規(guī)則“/test”截取,然后將“/test”后面的內(nèi)容(此處為“/a.jsp”)拼接到proxy_pass的后面,然后轉(zhuǎn)發(fā),也就是最后實(shí)際請求地址為:proxy_pass http://localhost:8080/test/a.jsp。
所以,如果location的匹配規(guī)則最后不加斜線'/',則proxy_pass的最后也不要加斜線,或者都加上斜線,不然就不能正確訪問實(shí)際地址,導(dǎo)致404 not found錯誤。
注:正則匹配不適用,關(guān)于location的匹配規(guī)則,可以參考其他資料。
nginx反向代理中proxy_pass后面帶\和不帶\的坑
1. proxy_pass中帶\和不帶\的問題
(1)在nginx中配置proxy_pass時,當(dāng)在后面的url加上了/,相當(dāng)于是絕對根路徑,則nginx不會把location中匹配的路徑部分代理走;
(2)如果沒有/,則會把匹配的路徑部分也給代理走。
2. 舉例
下面四種情況分別用http://192.168.1.4/proxy/test.html 進(jìn)行訪問。
(1)
location /proxy/ {
proxy_pass http://127.0.0.1:81/;
}
由于port后面有/ ,則不會代理匹配的路徑,所以最終會被代理到: http://127.0.0.1:81/test.html
(2)
location /proxy/ {
proxy_pass http://127.0.0.1:81;
}
由于port后面沒有/ , 則會代理匹配的路徑,所以最終會被代理到: http://127.0.0.1:81/proxy/test.html
(3)
location /proxy/ {
proxy_pass http://127.0.0.1:81/ftlynx/;
}
由于port后面有/ ,則不會代理匹配的路徑,所以最終會被代理到: http://127.0.0.1:81/ftlynx/test.html
(4)
location /proxy/ {
proxy_pass http://127.0.0.1:81/ftlynx;
}
由于port后面有/ , 則不會代理匹配的路徑,所以最終會被代理到: http://127.0.0.1:81/ftlynxtest.html
心得:
- 從結(jié)果可以看出,應(yīng)該說分為兩種情況才正確。
- 即http://127.0.0.1:81(上面的第二種)和 http://127.0.0.1:81/…(上面的第1,3,4種)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx+ModSecurity安全模塊部署的實(shí)現(xiàn)
本文主要介紹了Nginx+ModSecurity安全模塊部署的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
nginx反向代理服務(wù)器及負(fù)載均衡服務(wù)配置方法
正向代理一般是在客戶端設(shè)置代理服務(wù)器,通過代理服務(wù)器轉(zhuǎn)發(fā)請求,最終訪問到目標(biāo)服務(wù)器,這篇文章主要介紹了nginx反向代理服務(wù)器及負(fù)載均衡服務(wù)配置方法,需要的朋友可以參考下2023-12-12
Apache select和Nginx epoll模型的用法對比
這篇文章主要介紹了Apache select和Nginx epoll模型的用法對比,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-07-07
nginx日志切割定時任務(wù)的實(shí)現(xiàn)
Nginx日志切割能有效管理日志,便于查詢、控制存儲空間、提高處理效率、方便備份與歸檔,減少數(shù)據(jù)丟失風(fēng)險,實(shí)現(xiàn)方法包括重命名日志文件、編寫定時日志腳本和設(shè)置crontab定時任務(wù)2024-11-11

