nginx反向代理配置去除前缀

Posted on 2020-08-27 11:51  keeplovingjava  阅读(299)  评论(0)    收藏  举报

使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法:

方法一:

 1 server {
 2     listen              8000;
 3     server_name         abc.com;
 4     access_log  "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G"  main;
 5 
 6     location ^~/user/ {
 7         proxy_set_header Host $host;
 8         proxy_set_header  X-Real-IP        $remote_addr;
 9         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
10         proxy_set_header X-NginX-Proxy true;
11 
12         proxy_pass http://user/;
13     }
14 
15     location ^~/order/ {
16         proxy_set_header Host $host;
17         proxy_set_header  X-Real-IP        $remote_addr;
18         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
19         proxy_set_header X-NginX-Proxy true;
20 
21         proxy_pass http://order/;
22     }
23 }

 

 

^~/user/表示匹配前缀是user的请求,proxy_pass的结尾有/, 则会把/user/*后面的路径直接拼接到后面,即移除user

方法二:

 1 upstream user {
 2   server localhost:8089 weight=5;
 3 }
 4 upstream order {
 5   server localhost:8090 weight=5;
 6 }
 7 
 8 server {
 9     listen              80;
10     server_name  abc.com;
11     access_log  "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G"  main;
12 
13     location ^~/user/ {
14         proxy_set_header Host $host;
15         proxy_set_header  X-Real-IP        $remote_addr;
16         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
17         proxy_set_header X-NginX-Proxy true;
18 
19         rewrite ^/user/(.*)$ /$1 break;
20         proxy_pass http://user;
21     }
22 
23     location ^~/order/ {
24         proxy_set_header Host $host;
25         proxy_set_header  X-Real-IP        $remote_addr;
26         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
27         proxy_set_header X-NginX-Proxy true;
28 
29         rewrite ^/order/(.*)$ /$1 break;
30         proxy_pass http://order;
31     }
32 }

 

 

proxy_pass结尾没有/, rewrite重写了url。

 

 

以上摘自csdn-gong-cy,仅供自己学习使用