nginx非http端口重定向
nginx non http port redirection
客户中有一台运行 nginx 的服务器、来自 saltstack 的 salt master 守护进程和一个执行秘密操作的秘密网络应用程序。
注意事项:
- 本场景只有一个ip,只有一台服务器,多条DNS记录可用;
- 我在 80 端口安装了 nginx 运行;
- 和 salt master 运行 在 6453;
- 一个 domain.example.com 绑定到那个 IP,暴露我的 nginx 80 端口,指向秘密的 webapp;
- 其他domain.example.com 绑定到同一个 IP,暴露我的 nginx 80 端口,我想用它来代理 salt 端口。
该客户在其他地方有一台机器,确实需要连接到盐,互联网连接由一个秘密组织提供,他们只允许连接到端口 80,无法协商。
我的问题:
是否可以使用nginx将另一个domain.example.com80端口重定向到6453端口?我尝试了以下方法:
server {
listen 80;
server_name otherdomain.example.com;
proxy_pass 127.0.0.1:6453;
}
但这并不像预期的那样有效。有可能的?有一些方法可以使用 nginx 来做到这一点?
我从日志中得到的错误是:
"proxy_pass" directive is not allowed here
proxy_pass
需要 specified within a location context,并且基本上是 Web 事物。它只有在网络 headers 被发送和解释后才会发挥作用。
像您想要完成的事情通常使用 HAProxy in tcp mode, although there is a tcp proxy module 来完成,它也做类似的事情。
但是,我认为您不会非常成功,因为 ZMQ 不参与可以轻松区分网络请求的协议(HTTP 主机:headers) non-web 请求(来自同一端口)。
我的建议是找到某种方法为此使用另一个端口,第二个 IP 地址,或者编写一个棘手的 TCP 代理程序来识别传入的 HTTP and/or ZMQ 连接并将它们透明地转发到正确的本地端口。
客户中有一台运行 nginx 的服务器、来自 saltstack 的 salt master 守护进程和一个执行秘密操作的秘密网络应用程序。
注意事项:
- 本场景只有一个ip,只有一台服务器,多条DNS记录可用;
- 我在 80 端口安装了 nginx 运行;
- 和 salt master 运行 在 6453;
- 一个 domain.example.com 绑定到那个 IP,暴露我的 nginx 80 端口,指向秘密的 webapp;
- 其他domain.example.com 绑定到同一个 IP,暴露我的 nginx 80 端口,我想用它来代理 salt 端口。
该客户在其他地方有一台机器,确实需要连接到盐,互联网连接由一个秘密组织提供,他们只允许连接到端口 80,无法协商。
我的问题:
是否可以使用nginx将另一个domain.example.com80端口重定向到6453端口?我尝试了以下方法:
server {
listen 80;
server_name otherdomain.example.com;
proxy_pass 127.0.0.1:6453;
}
但这并不像预期的那样有效。有可能的?有一些方法可以使用 nginx 来做到这一点?
我从日志中得到的错误是:
"proxy_pass" directive is not allowed here
proxy_pass
需要 specified within a location context,并且基本上是 Web 事物。它只有在网络 headers 被发送和解释后才会发挥作用。
像您想要完成的事情通常使用 HAProxy in tcp mode, although there is a tcp proxy module 来完成,它也做类似的事情。
但是,我认为您不会非常成功,因为 ZMQ 不参与可以轻松区分网络请求的协议(HTTP 主机:headers) non-web 请求(来自同一端口)。
我的建议是找到某种方法为此使用另一个端口,第二个 IP 地址,或者编写一个棘手的 TCP 代理程序来识别传入的 HTTP and/or ZMQ 连接并将它们透明地转发到正确的本地端口。