如何在 nginx 中指向代理服务器的多条路径

Posted

技术标签:

【中文标题】如何在 nginx 中指向代理服务器的多条路径【英文标题】:How to point many paths to proxy server in nginx 【发布时间】:2014-12-18 07:24:46 【问题描述】:

我正在尝试设置将处理各种路径并将它们代理到我的 web 应用程序的 nginx 位置。

这是我的会议:

服务器 听 80; server_name www.example.org; #这很好用 地点 / proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8081/myApp/; #不工作 位置 ~ ^/(.+)$ proxy_pass http://localhost:8081/myApp/$1;

我想通过各种路径访问 myApp,例如:/myApp/ABC、/myApp/DEF、myApp/GEH 或 /myApp/ZZZ。 当然这些路径在 myApp 中不可用。我希望他们指向 myApp 的根目录并保留 url。 可以用 nginx 存档吗?

【问题讨论】:

“当然这些路径在 myApp 中不可用”——它们应该可用。你的应用怎么知道你来到/ABC 【参考方案1】:

Nginx 位置按定义顺序匹配。 location / 基本上是一个通配符位置,因此它将匹配所有内容,并且没有任何内容会到达第二个位置。颠倒两个定义的顺序,它应该可以工作。但实际上,现在我仔细观察,我认为这两个地方基本上都在做同样的事情:

/whatever/path/ ->>proxies-to->> http://localhost:8081/myApp/whatever/path/

【讨论】:

【参考方案2】:

很晚才回复。这可能对某人有帮助

try proxy_pass /myApp/ /location1 /location2;

每个位置用空格隔开。

【讨论】:

以上是关于如何在 nginx 中指向代理服务器的多条路径的主要内容,如果未能解决你的问题,请参考以下文章

详解nginx如何代理静态资源(长搜索路径优先)

nginx如何配置代理

Nginx 如何设置反向代理

nginx 80端口代理无效 非80可用

如何将任何包含点的路径与 nginx 匹配?

Nginx 使用反向代理 解决异步api获取问题!