nginx中location与proxy_pass的斜杠问题
proxy_pass类型
不带URI,只包含IP和端口:proxy_pass http://192.168.200.227:8080
带URI(包括单斜杠):proxy_pass http://192.168.200.227:8080/,
proxy_pass http://192.168.200.227:8080/aaa,proxy_pass http://192.168.200.227:8080/aaa/等情况
配置例子
- 不带URI,只包含IP和端口,将所有URI拼入proxy_pass后面
# 访问地址:http://192.168.200.227:80/proxy/api/test
location /proxy/ {
proxy_pass http://192.168.200.227:8080;
}
# 1️⃣ 实际地址:http://192.168.200.227:8080/proxy/api/test
location /proxy {
proxy_pass http://192.168.200.227:8080;
}
# 2️⃣ 实际地址:http://192.168.200.227:8080/proxy/api/test
- 带URI(包括单斜杠),将排除location后的URI拼入proxy_pass后面
# 访问地址:http://192.168.200.227:80/proxy/api/test
location /proxy/ {
proxy_pass http://192.168.200.227:8080/;
}
# 3️⃣ 实际地址:http://192.168.200.227:8080/api/test
location /proxy {
proxy_pass http://192.168.200.227:8080/;
}
# 4️⃣ 实际地址:http://192.168.200.227:8080//api/test
location /proxy/ {
proxy_pass http://192.168.200.227:8080/test/;
}
# 5️⃣ 实际地址:http://192.168.200.227:8080/test/api/test
location /proxy {
proxy_pass http://192.168.200.227:8080/test/;
}
# 6️⃣ 实际地址:http://192.168.200.227:8080/test//api/test
location /proxy/ {
proxy_pass http://192.168.200.227:8080/test;
}
# 7️⃣ 实际地址:http://192.168.200.227:8080/testapi/test
location /proxy {
proxy_pass http://192.168.200.227:8080/test;
}
# 8️⃣ 实际地址:http://192.168.200.227:8080/test/api/test
本文详细解析了 Nginx 中 location 和 proxy_pass 的配置方式,特别是针对 URI 处理的不同场景,帮助读者理解如何正确配置以实现期望的 URL 转发效果。
693

被折叠的 条评论
为什么被折叠?



