首页 > 解决方案 > Nginx 代理通过查询参数传递

问题描述

我需要使用遵循这些规则的 Nginx 代理传递 Web 套接字:

仅代理 URL 1

ws_api/account/([0-9a-zA-Z]+)/messaging/brand/*

但不是 URL 2

任何带有查询参数的 url (brand_request_type=ums)

ws_api/account/([0-9a-zA-Z]+)/messaging/brand/*/?brand_request_type=ums

我已成功代理 1,但无法使用查询参数忽略任何 URL。

我试图用正则表达式忽略 URL 2。

这是代码:

我的主域是:http://homeDomain 新域是:http://newDomain

 location  ~ ws_api/account/([0-9a-zA-Z]+)/messaging/brand/ {

    proxy_pass http://newDomain;
    proxy_http_version 1.1;
    proxy_read_timeout 70;

    }  

    location  ~ ws_api/account/([0-9a-zA-Z]+)/messaging/brand/*/(\bbrand_request_type=ums\b) {

    proxy_pass http://homeDomain;
    proxy_http_version 1.1;
    proxy_read_timeout 70;

}  

标签: nginxquery-parametersproxypass

解决方案


我得到了答案,查询参数有问题,最好给一个不带'_'的名字

这是解决方案:

仅代理 URL 1:

ws_api/account/([0-9a-zA-Z]+)/messaging/brand/*

但不是 URL 2:

任何带有查询参数的 url (myqueryparam=ums)

ws_api/account/([0-9a-zA-Z]+)/messaging/brand/*/?myqueryparam=ums

这是代码:

我的主域是:http://homeDomain新域是:http://newDomain

 location  ~ ws_api/account/le50585563/messaging/brand/ {

 set $pp_d newDomain;

 if ($arg_myqueryparam ~ "ums") {
    set $pp_d homeDomain;
 }

proxy_pass http://$pp_d;
proxy_http_version 1.1;
proxy_read_timeout 70;

}

推荐阅读