nginx反向代理配置去除前缀

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

方法一:加"/"

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

server {

    listen              8000;

    server_name         abc.com;

    access_log  "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G"  main;

  

    location ^~/user/ {

        proxy_set_header Host $host;

        proxy_set_header  X-Real-IP        $remote_addr;

        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

        proxy_set_header X-NginX-Proxy true;

  

        proxy_pass http://user/;

    }

  

    location ^~/order/ {

        proxy_set_header Host $host;

        proxy_set_header  X-Real-IP        $remote_addr;

        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

        proxy_set_header X-NginX-Proxy true;

  

        proxy_pass http://order/;

    }

}

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

方法二:rewrite

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

upstream user {

 server localhost:8089 weight=5;

}

upstream order {

 server localhost:8090 weight=5;

}

  

server {

 listen  80;

 server_name abc.com;

 access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main;

  

 location ^~/user/ {

 proxy_set_header Host $host;

 proxy_set_header X-Real-IP $remote_addr;

 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 proxy_set_header X-NginX-Proxy true;

  

 rewrite ^/user/(.*)$ /$1 break;

 proxy_pass http://user;

 }

  

 location ^~/order/ {

 proxy_set_header Host $host;

 proxy_set_header X-Real-IP $remote_addr;

 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 proxy_set_header X-NginX-Proxy true;

  

 rewrite ^/order/(.*)$ /$1 break;

 proxy_pass http://order;

 }

}

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

 

eg:https://www.baidu.com/user/userlogin?from=1&username=1&pass=2

经过nginx转发之后得到的数据为 userlogin?from=1&username=1&pass=2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值