nginx非http端口重定向

时间:2015-05-12 20:07:24

标签: nginx salt-stack

客户中的服务器运行nginx,来自saltstack的salt master守护程序和秘密Web应用程序执行秘密操作。

考虑:

  • 在这种情况下,只有一个ip,只有一个服务器和多个DNS记录可用;
  • 我在端口80中运行nginx;
  • 盐大师在6453运行;
  • 绑定到该IP的domain.example.com,公开我的nginx 80端口,指向秘密的webapp;
  • otherdomain.example.com绑定到同一个IP,暴露我的nginx 80端口,我想用来代理盐端口。

该客户在其他地方有一台机器,需要连接到盐,并且互联网连接由秘密组织提供,它们只允许连接到端口80,无法进行协商。

我的问题:

是否可以使用nginx将otherdomain.example.com 80端口重定向到6453端口?我尝试了以下方法:

server {                                                                                                                                         
    listen 80;                                                                                                                               
    server_name otherdomain.example.com;                                                                                                       
    proxy_pass 127.0.0.1:6453;                                                                                                                   
}   

但这并不像预期的那样奏效。有可能的?使用nginx有一些方法可以做到这一点吗?

我从日志中得到的错误是:

"proxy_pass" directive is not allowed here

1 个答案:

答案 0 :(得分:2)

proxy_pass需要BlobRequestOptions,并且基本上是Web Thing。只有在发送和解释Web标题后才会发挥作用。

你尝试完成的事情通常是在tcp模式下使用specified within a location context完成的,尽管HAProxy也有类似的事情。

但是,我不认为你会非常成功,因为ZMQ没有参与协议(HTTP主机:标题),很容易让你告诉网络请求除了非-web请求(进入同一端口)。

我的建议是找到一些方法来使用另一个端口,第二个IP地址,或编写一个棘手的TCP代理,它将识别传入的HTTP和/或ZMQ连接并透明地将它们转发到正确的本地端口。