nginx根据二级目录转发服务以及带/和不带/的区别说明
nginx根据二级目录转发服务及带/和不带/区别
在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;
如果没有/,表示相对路径,把匹配的路径部分也给代理走。
具体实例如下:
1.配置文件location带/且proxy_pass带/
server { listen 80; server_name test.htjs.net; #通过访问service二级目录来访问后台 location /service/ { # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点 proxy_pass http://192.168.1.51:8080/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
即如果访问test.htjs.net/service/xxx.html
实际访问的是后端服务http://192.168.1.51:8080/xxx.html
2.配置文件location带/且proxy_pass不带/
server { listen 80; server_name test.htjs.net; #通过访问service二级目录来访问后台 location /service/ { # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点 proxy_pass http://192.168.1.51:8080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
即访问http://test.htjs.net/service/xxx.html
实际访问的是后端服务 http://192.168.1.51:8080/service/xxx.html
3.配置文件location带/且proxy_pass带二级目录和/
server { listen 80; server_name test.htjs.net; #通过访问service二级目录来访问后台 location /service/ { # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点 proxy_pass http://192.168.1.51:8080/api/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
即访问访问http://test.htjs.net/service/xxx.html
实际访问的是后端服务 http://192.168.1.51:8080/api/xxx.html
4.配置文件location带/且proxy_pass带二级目录不带/
server { listen 80; server_name test.htjs.net; #通过访问service二级目录来访问后台 location /service/ { # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点 proxy_pass http://192.168.1.51:8080/api; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
即访问访问http://test.htjs.net/service/xxx.html
实际访问的是后端服务 http://192.168.1.51:8080/apixxx.html
5.location不带/且proxy_pass带二级目录不带/
server { listen 80; server_name test.htjs.net; #通过访问service二级目录来访问后台 location /service { # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点 proxy_pass http://192.168.1.51:8080/api; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
即访问访问http://test.htjs.net/service/xxx.html
实际访问的是后端服务 http://192.168.1.51:8080/api/xxx.html
6.location不带/且proxy_pass带/
server { listen 80; server_name test.htjs.net; #通过访问service二级目录来访问后台 location /service { # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点 proxy_pass http://192.168.1.51:8080/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
即访问访问http://test.htjs.net/service/xxx.html
实际访问的是后端服务 http://192.168.1.51:8080//xxx.html
7.location不带/且proxy_pass不带/
server { listen 80; server_name test.htjs.net; #通过访问service二级目录来访问后台 location /service { # http://192.168.1.51:8080后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点 proxy_pass http://192.168.1.51:8080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
即访问访问http://test.htjs.net/service/xxx.html
实际访问的是后端服务 http://192.168.1.51:8080/service/xxx.html
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Nginx代理Vue项目出现Invalid Host header问题及解决
在使用Nginx的upstream对Vue项目进行负载均衡时,如果代理地址无法访问目标地址且页面报错InvalidHostheader(无效主机头),可能是由于Vue项目的主机检查配置导致的,解决方法是在Vue项目的webpack.dev.js文件中的devServer下添加disableHostCheck:true,跳过主机检查2024-12-12
最新评论