nginx得if语句内proxy_pass不允许携带url部分,如何处理

在nginx中,proxy_pass指令不能直接携带URL部分。但是,可以使用rewrite指令结合正则表达式来处理URL部分。

下面是一个示例配置,演示如何使用rewrite指令将URL中的某个部分进行替换后传递给后端服务器:
 

location /v100/{
            proxy_set_header Host $host;
            proxy_pass http://buglife_100/;
       }
        location /v200/{
            proxy_set_header Host $host;
            proxy_pass http://buglife_200/;
       }
        location / {
            root   E:/data/dist/;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        location /api/ {
             proxy_set_header Host $host;
             set $version_switch 0;
             if ( $http_sv = "1.0.0" ) {
	     set $version_switch 1;
	}
	if ( $query_string ~ "sv=1.0.0" ) {
	     set $version_switch 1;
	}
             if ( $http_sv = "2.0.0") {
	     set $version_switch 2;
	}
             if ( $query_string ~ "sv=2.0.0") {
	     set $version_switch 2;
	}
             if ( $version_switch = 1 ) {
                   rewrite ^/api/(.*)$ /v100/$1 last;
	}
             if ( $version_switch = 2 ) {
                   rewrite ^/api/(.*)$ /v200/$1 last;
	}
             if ( $version_switch = 0 ) {
                   rewrite ^/api/(.*)$ /v100/$1 last;
	}
       }


在上面的配置中:

1.当访问以/api/ 且满足版本为1.0.0开头的URL时,Nginx将使用rewrite指令将URL中的/api替换为/v100,并将修改后的URL传递给后端服务器。

2.当访问以/api/ 且满足版本为2.0.0开头的URL时,Nginx将使用rewrite指令将URL中的/api替换为/v200,并将修改后的URL传递给后端服务器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不爱运动的跑者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值