nginx proxy_pass后的url加不加/的区别

本文探讨了nginx中proxy_pass配置时,URL后缀加斜杠与不加斜杠的不同影响。加斜杠时,请求路径会视为服务器根路径;而不加斜杠,请求会认为/test/是根路径。此知识点对于正确配置nginx代理转发至关重要,尤其在单一公网IP和端口需访问内网服务的场景。

nginnginx配置proxy_pass,需要注意转发的路径配置

第一种:proxy_pass后缀不加斜杠
location /abc/ {
            proxy_pass http://172.16.1.38:8080;
     }
第二种:proxy_pass后缀加斜杠
location /abc/ {
                proxy_pass http://172.16.1.38:8081/;
     } x proxy_pass后的url加不加/的区别

上面两种配置,区别只在于proxy_pass转发的路径后是否带 /

针对情况1,如果访问url = http://server/abc/test.jsp,则被nginx代理后,请求路径会便问http://proxy_pass/abc/test.jsp,将test/ 作为根路径,请求test/路径下的资源

针对情况2,如果访问url = http://server/abc/test.jsp,则被nginx代理后,请求路径会变为 http://proxy_pass/test.jsp,直接访问server的根资源

典型实例:

 worker_processes  1;
    events {
        worker_connections  1024;
    }
     
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
     
     
    upstream app{
        server 172.16.1.38:8233;
    }
    upstream online{
        server 172.16.1.38:8239;
    }
     
     
    server {
        listen       881;
        server_name  IP;
     
        location /bxg/user/ {
            root   /root;
            index  index.html index.htm;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 100m;
            proxy_pass  http://online;
    解释:当我们访问http://IP/881/bxg/user/下面的资源,nginx会帮我们跳转到online下面对应的IP+端口
    此时返回的url =http://IP/881/bxg/user/1.txt
        }
     
     
        location /bxg/app/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 100m;
            proxy_pass  http://app/;
    解释:当我们访问http://IP/881/bxg/app/下面的资源(此时proxy_pass后面带斜杠),nginx也会帮我们跳转到app下面对应的IP+端口
    此时返回的url =http://IP/881/1.txt
        }
     
     
    #这行属于默认匹配,就是后面什么也不添加,881端口就直接调用这个项目
        location / {
            root   /root;
            index  index.html index.htm;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 100m;
            proxy_pass  http://app;
        }
    }

提示:这种location常用于只有一个公网IP和端口场景,内网IP没有进行映射,但是又需要请求内网服务器的服务,就可以使用location的模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值