nginx动态重定向url

Posted

技术标签:

【中文标题】nginx动态重定向url【英文标题】:nginx dynamic redirection of url 【发布时间】:2018-05-29 13:56:04 【问题描述】:

我在服务器端动态打开和关闭 websocket,端口范围从 5700 到 5800。 Web 客户端可以访问运行 Web 服务器 (nginx) 的端口 80。 我需要我的客户通过端口 80 访问这些 websocket,我正在考虑为每个可访问的 websocket 生成一个 url(例如 www.my-site/websocket/5701)并通过 nginx 代理它(到端口 5701 上的 websocket)。

有没有一种方法可以动态告诉 nginx 将流量从生成的 url 重定向到 websocket?

如果从客户端到 web 服务器端口 80 的流量被加密,但从 nginx 到 websocket 的流量不加密,我的解决方案会起作用吗?

编辑: 我有一个可行的解决方案,但我想让它更通用(从一个块中的端口 5700 到 5750)

location /websocket/5700 
    proxy_pass http://127.0.0.1:5700;

【问题讨论】:

动态是什么意思!你能不能再深入一点。 我的意思是websockets可以随时打开或关闭。在写我的问题时,我意识到这个事实并不重要,代理可以保持打开状态 【参考方案1】:

我通过使用找到了答案:

location ~ /websocket/(.*)$ 
   proxy_pass http://127.0.0.1:$1;

【讨论】:

以上是关于nginx动态重定向url的主要内容,如果未能解决你的问题,请参考以下文章

nginx怎么根据url前缀实现301重定向?

【SWAG】解决nginx重定向问题

如何在nginx创建临时重定向和永久重定向

在 nginx 中重定向 url 时遇到问题

在 nginx 中 URL 重定向到非 http url

nginx如何将url重定向到特定页面