nginx - 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;
}
解决方案
我得到了答案,查询参数有问题,最好给一个不带'_'的名字
这是解决方案:
仅代理 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;
}
推荐阅读
- android - 如何使用 AndroidX 在 RecyclerView 中使用插入分隔符?
- c# - Visual Studio C# 应用程序不会使用调试信息构建
- memory - htop 显示内存仍在使用,即使调用了 deallocate
- sql - 如何从sql中选择的日期减少一天
- node.js - yarn run [dev] 执行的命令和它的 vanilla 节点实现有什么区别?
- html - 使用 jQuery 搜索表格时隐藏
- c++ - 在 C++ Dev-Cpp 中安装外部库
- javascript - 编写一个接受字符串并返回仅包含元音的新字符串的函数
- python - Scrapy:如何解析多个页面?
- python - 将 Textblob 翻译问题转换为 pandas 数据框