nginx根据二级目录转发服务以及带/和不带/的区别

本文详细解释了Nginx配置中proxy_pass选项后面添加/或不添加/的区别,以及对URL路径的影响。包括带/和不带/的情况,以及二级目录的处理方式。
摘要由CSDN通过智能技术生成

在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

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忍冬行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值