Nginx中代理的上下文路径设置方式
作者:赵同学来了
这篇文章主要介绍了Nginx中代理的上下文路径设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Nginx代理的上下文路径设置
- 实际配置nginx的时候
- 在Location段中配置的路径(request_uri)以及代理指令(proxy_pass)中设置的上下文路径的组合不同
- 最后实现的结果就不一样
例子
- 加入请求nginx服务的URL都为: http://10.10.1.72:8088/abc/system/commom
Case 1
Location后的上下文路径为"/api",代理路径的上下文路径为 空
location /abc{ proxy_pass http://10.10.1.90:8080; proxy_rediect off; }
- 代理过程: 将schema(http),host,port替换,其他URI都不变,然后发送到web服务器。
- 客户端请求URL: http://10.10.1.72:8088/abc/system/commom
- 代理结果: http://10.10.1.90:8080/abc/system/commom
Case 2
Location后的上下文路径为"/abc",代理路径的上下文路径为 “/”
location /abc{ proxy_pass http://10.10.1.90:8080/; proxy_rediect off; }
- 代理过程: 按照请求路径中的/abc匹配到了对应的代理后,除了替换host,port替换,把"/abc"替换为代理路径上下文路径"/"
- 客户端请求URL: http://10.10.1.72:8088/abc/system/commom
- 代理结果: http://10.10.1.90:8080//system/commom
Case 3
Location后的上下文路径为"/abc/",代理路径的上下文路径为 空
location /abc/{ proxy_pass http://10.10.1.90:8080; proxy_rediect off; }
- 代理过程: 按照请求路径中的/abc匹配到了对应的代理后,把请求的ip和port替换为代理服务的ip和port,对应的URi不变
- 客户端请求URL: http://10.10.1.72:8088/abc/system/commom
- 代理结果: http://10.10.1.90:8080/abc/system/commom
Case 4
Location后的上下文路径为"/abc/",代理路径的上下文路径为 “/”
location /abc/{ proxy_pass http://10.10.1.90:8080/; proxy_rediect off; }
- 代理过程: 按照请求路径中的/abc匹配到了对应的代理后,除了把请求的ip和port替换为代理服务的ip和port,把"/abc/“替换为”/“,而”/abc/"之后的路径不变。
- 客户端请求URL: http://10.10.1.72:8088/abc/system/commom
- 代理结果: http://10.10.1.90:8080/system/commom
总结
如果代理proxy_pass只有ip和host,没有上下文,则代理过程只替换nginx请求的ip和port,其余部分不变。
如果代理proxy_pass除了ip和host,还有上下文,则代理过程中,除了替换ip和port之外,还会将location的路径修改为porxy_pass中的上下文,然后将剩余路径拼接。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。