工作中经常会使用Nginx 配置反向代理 , 代理末尾的斜杠配置组合大体上可以分为8种 , 所以总是忘记 location 和 proxy_pass 最后面的斜杠会对代理结果有怎样的影响 。今天我们就来试试找个统一的规则 。
server {listen 8000;server_name localhost;#配置反向代理location /test/ {proxy_pass http://127.0.0.1:9000/api/;}}
我们简单配置个反向代理的 conf , 监听端口为8000 , 代理端口为 9000 , 下面分别罗列出 location 和proxy_pass 斜杠的8类组合 , 以及代理的结果 。
第一种斜杠配置#配置1location /test/ {proxy_pass http://127.0.0.1:9000/api/;}
模拟请求
curl http://localhost:8000/test/user/query
由于我没有开启端口为9000的服务 , nginx会返回502 , 所以来看下nginx的 error.log日志 , 截取一部分如下:
request: "GET /test/user/query HTTP/1.1", upstream: "http://127.0.0.1:9000/api/user/query"
其中 , upstream 后面就是代理的结果 , 对比模拟请求 , 可以发现除了 ip:port 被替换 , 还少了个 "test" , 我们大胆推测一下 , nginx 监听到模拟请求后 , 判断其和 "/test/" 匹配 , 截取了 "
http://localhost:8000/test/" , 剩余的 "user/query" 拼接到 proxy_pass 的内容后面 , 就得到了 "
http://127.0.0.1:9000/api/user/query"
第二种斜杠配置#配置2location /test {proxy_pass http://127.0.0.1:9000/api;}
模拟请求
curl http://localhost:8000/test/user/query
error.log日志截取如下:
request: "GET /test/user/query HTTP/1.1", upstream: "http://127.0.0.1:9000/api/user/query"
这里截取了 "
http://localhost:8000/test" , 剩余 "/user/query" 拼接到 proxy_pass 的内容后面 , 得到 "http://127.0.0.1:9000/api/user/query" , 符合推测 。
第三种斜杠配置#配置3location /test {proxy_pass http://127.0.0.1:9000/api/;}
模拟请求
curl http://localhost:8000/test/user/query
【nginx反向代理斜杠“/”问题总是记不住?】error.log日志截取如下:
request: "GET /test/user/query HTTP/1.1", upstream: "http://127.0.0.1:9000/api//user/query"
这里截取了 "
http://localhost:8000/test" , 剩余 "/user/query" 拼接到 proxy_pass 的内容后面 , 得到 "
http://127.0.0.1:9000/api//user/query" , 同样符合推测 。
第四种斜杠配置#配置4location /test/ {proxy_pass http://127.0.0.1:9000/api;}
模拟请求
curl http://localhost:8000/test/user/query
error.log日志截取如下:
request: "GET /test/user/query HTTP/1.1", upstream: "http://127.0.0.1:9000/apiuser/query"
这里截取了 "
http://localhost:8000/test/" , 剩余 "user/query" 拼接到 proxy_pass 的内容后面 , 得到 "http://127.0.0.1:9000/apiuser/query" , 同样符合推测 。
第五种斜杠配置#配置5location /test/ {proxy_pass http://127.0.0.1:9000/;}
模拟请求
curl http://localhost:8000/test/user/query
error.log日志截取如下:
request: "GET /test/user/query HTTP/1.1", upstream: "http://127.0.0.1:9000/user/query"
这里截取了 "
http://localhost:8000/test/" , 剩余 "user/query" 拼接到 proxy_pass 的内容后面 , 得到 "http://127.0.0.1:9000/user/query" , 同样符合推测 。
第六种斜杠配置#配置6location /test {proxy_pass http://127.0.0.1:9000/;}
模拟请求
curl http://localhost:8000/test/user/query
error.log日志截取如下:
request: "GET /test/user/query HTTP/1.1", upstream: "http://127.0.0.1:9000//user/query"
这里截取了 "
http://localhost:8000/test" , 剩余 "/user/query" 拼接到 proxy_pass 的内容后面 , 得到 "http://127.0.0.1:9000//user/query" , 符合推测 。
第七种斜杠配置#配置7location /test {proxy_pass http://127.0.0.1:9000;}
模拟请求
curl http://localhost:8000/test/user/query
error.log日志截取如下:
request: "GET /test/user/query HTTP/1.1", upstream: "http://127.0.0.1:9000/test/user/query"
推荐阅读
- nginx web负载均衡配置
- 怎么做微商代理?
- 科目二反向s弯道技巧,科目二之反S弯道-
- 代理律师还原踹伤猥亵男全程-男生踹伤猥亵女生男子被刑拘
- 代理律师还原踹伤猥亵男全程-踹伤猥亵男男生被解除刑拘
- 科目二s弯道,科目二反向s弯道技巧-
- 快递公司怎样加盟代理?
- 微商有哪些类型?
- Mac下的nginx服务器安装本地的https环境
- 代理记账公司怎么找客源,自己做代理记账怎么找客户-