我有两个互相交谈的程序。我将它们移动到其他主机,因此我希望对连接进行加密。与其给我的应用程序添加SSL代码并冒着危及安全性的错误的风险,倒不如让nginx处理它最简单,最明智。
但是这些是二进制流,而不是http。我认为,也许我想使用ngx_stream_core_module或ngx_stream_ssl_module模块,但是(1)确实,这是黑暗中的一个障碍,它们只是我发现的唯一似乎遥不可及的模块(例如,不没有位置块),(2)这些模块似乎是用于负载平衡的,(3)在不了解这些模块的用途的情况下,正确使用它们非常困难。
实际上,我想我想向后使用nginx,因为通常一个nginx会以明文方式终止TLS连接和proxy_pass,而我想做相反的事情:接受明文连接并使用TLS进行proxy_pass。< / p>
作为一个快速测试,我首先确认我的nginx实例是使用流模块构建的:
$ nginx -V 2>&1 | tr ' ' '\n' | grep -i stre
--with-stream
--with-stream_ssl_module
$
然后,我写了一个名为pliny的文件,跳过了SSL部分,同时检查了我是否至少可以使用proxy_pass:
stream {
upstream backend {
server 127.0.0.1:3002;
}
server {
listen 3001;
proxy_pass backend;
}
}
那里没有幸福:
$ sudo nginx -t
nginx: [emerg] "stream" directive is not allowed here in /etc/nginx/sites-enabled/pliny:1
nginx: configuration file /etc/nginx/nginx.conf test failed
$
关于如何将Nginx用作TLS隧道的任何提示? (或者关于我应该怎么做的指针?)