我在远程服务器上的端口80到8000上的nginx中做了一个proxy_pass ,然后从远程端口转发到我的本地主机,从8000到80端口。 这很好,但我也想用https来做,但似乎nginx需要一个有效的证书来传递stream量。
有没有办法让我的远程服务器简单地转发从端口443 trafic说8443(然后我将转发远程8443本地443)。 然后在我的开发机器上终止ssl而不是在远程服务器上执行它?
我的远程运行的Ubuntu和我的本地主机运行OSX 。
虽然nginx可能有一个第三方模块来处理原始的TCP连接,但我相当确定,默认情况下,一切都必须是HTTP或终止的HTTPS。 我认为在你的情况下,我会在networking层面做端口转发:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
您可以让nginx处理SSL并转发到后端服务器上的端口8000。 这意味着nginx是SSL的开端,nginx和后端之间没有SSL。
可能最好的select是像@ cperrin88所说的那样做。 但是,如果你真的不想在你的nginx上解密https,你可以把它作为TCPstream量转发,然后在后端解密。
Nginx默认不支持TCP代理,但是你可以使用这个模块nginx_tcp_proxy_module
如果你只是想通过TCPstream量,HAProxy是一个很好的候选人。 易于安装和简单的configuration。 HAProxy可以负载平衡TCP以及HTTPstream量。
在Ubuntu上写这个HTTPstream量应该让你开始。 将模式更改为TCP,以便对原始TCP进行负载平衡。