nginx配置中,proxy_pass有相对路径和绝对路径区分

proxy_pass配置的端口后面只要有/,不管路径后面有没有斜杠/,都表示绝对路径。此时,有请求匹配到的localtion右边的字符串部分就会被去掉,然后剩余的部分直接带过去。

反之就是相对路径的,此时只要匹配到,就会把全部url都带过去。

proxy_pass  http://localhost:8080/;  #绝对路径

proxy_pass  http://localhost:8080/api;  #绝对路径

proxy_pass  http://localhost:8080/api/;  #绝对路径

proxy_pass  http://localhost:8080;  #相对路径,因为端口后面没有/

 

例子1:

location /a1/ {

  proxy_pass  http://localhost:8080;

}

相对路径,此时请求 http://1.1.1.1/a1/test时,相当于http://localhost/a1/test

 

例子2:

location /a1 {

  proxy_pass  http://localhost:8080;

}

相对路径,此时请求 http://1.1.1.1/a1/test时,相当于http://localhost/a1/test

 

例子3:

location /a1 {

  proxy_pass  http://localhost:8080/;

}

绝对路径,此时请求 http://1.1.1.1/a1/test时,相当于http://localhost//test

 

例子4:

location /a1/ {

  proxy_pass  http://localhost:8080/;

}

绝对路径,此时请求 http://1.1.1.1/a1/test时,相当于http://localhost:8080/test

 

例子5:

location /a1/ {

  proxy_pass  http://localhost:8080/b1;

}

绝对路径,此时请求 http://1.1.1.1/a1/test时,相当于http://1.1.1.1/b1test

 

例子6:

location /a1/ {

  proxy_pass  http://localhost:8080/b1/;

}

绝对路径,此时请求 http://1.1.1.1/a1/test时,相当于http://1.1.1.1/b1/test

 

使用JavaNginx的`proxy_pass`指令进行页面路径转发可通过如下方式操作: ### 域名转发到本地Java应用端口 若要将域名转发到本地运行的Java应用端口(如Tomcat默认的8080端口),可在Nginx配置文件里添加如下配置: ```nginx server{ listen 80; server_name tomcat.shaochenfeng.com; index index.php index.html index.htm; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $proxy_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 此配置把访问`tomcat.shaochenfeng.com`的请求转发到本地的8080端口,并且设置了请求头,让Java应用能收到真实的请求信息[^1]。 ### 区分前端后端路径转发 当存在H5前端Java后端时,可在Nginx配置文件里分别对前端静态资源后端Java接口进行配置: ```nginx server { listen 82; server_name localhosts; location / { root /usr/soft/nginx/html/threephone; index index.html index.htm; } location /prod-api/ { proxy_pass http://ip:8080/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ``` 在这个配置中,访问根路径`/`时,Nginx会返回指定目录下的前端静态页面;访问`/prod-api/`开头的路径时,请求会被转发到`http://ip:8080/`的Java后端服务[^2]。 ### location与proxy_pass配置规则 在配置`location``proxy_pass`时,需要留意相关规则。`location`进行的是模糊匹配,没有“/”结尾时,`location /abc/def`能匹配`/abc/defghi`请求,也能匹配`/abc/def/ghi`等;有“/”结尾时,`location /abc/def/`不能匹配`/abc/defghi`请求,仅能匹配`/abc/def/anything`这样的请求。`proxy_pass`用于配置转发规则,可根据实际需求设置转发的目标地址[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zrande

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

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

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

打赏作者

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

抵扣说明:

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

余额充值