首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NGINX URL重定向

NGINX URL重定向
EN

Server Fault用户
提问于 2018-11-23 17:47:21
回答 1查看 67关注 0票数 0

在nginx中,我们一直试图重定向一个URL,如下所示: Client点击url:https://new.domain.com/reg?account.name=ABC&accountID.number=1234&OrderNumber=11111111&Code=2222

而nginx必须将请求路由到后端tomcat。

http://localhost:8000/some_dir/reg?account.name=ABC&accountID.number=1234&OrderNumber=11111111&Code=2222

服务器配置如下:

代码语言:javascript
复制
server {
listen 80;
listen [::]:80;

server_name localhost;

location ~ ^/reg?(.*) {
            resolver x.x.x.x;
            proxy_pass http://localhost:8000/some_dir/reg?$1;
}

有了上面的设置,我可以看到请求在从浏览器访问时击中了后端tomcat。但是,URI字符串在"reg?“之后?"account.name=ABC&accountID.number=1234&OrderNumber=11111111&Code=2222"没有接到指示。

有人能帮我指出大政方针有什么问题吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2018-11-23 18:46:57

这里的问题是,location只匹配URL的路径组件。因此,正如所写的,regex匹配的URL比您预期的多得多。例如,它与/re/redwood/regular以及/reg相匹配。但是它没有将查询字符串放在捕获中,因为查询字符串不是path组件的一部分。

幸运的是,您根本不需要正则表达式,也不需要捕获查询字符串,因为nginx已经在跟踪它。考虑:

代码语言:javascript
复制
location /reg {
    proxy_pass http://localhost:8080/some_dir/reg$is_args$args;
}

在这里,我们去掉了所有无关的匹配,只匹配以/reg开头的URL路径。您可以通过使用location = /reg来使其更加具体。然后我们显式地传递参数。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/941379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档