我可以将 NGINX 设置为透明 SSL 代理吗?

我可以将 NGINX 设置为透明 SSL 代理吗?

NGINX 可以设置为支持 SSL 的反向透明代理吗?我有一个使用 HTTPS 的第三方应用程序。出于业务目的,需要记录来自 HTTPS 连接的一些请求数据。

答案1

是的你可以。 http://nginx.org/r/proxy_pass

从该指令的描述可以看出,它允许协议/地址方案proxy_pass进行重定向。httphttps

我可以想象,您甚至可以通过使用 来使用 nginx 设置通用 TLS 拦截设备proxy_pass $scheme://$http_host;

此外,你可能需要了解OpenBSD 中继, 哪个,按照 中继.conf.5,正式支持“TLS检查”和“SSL/TLS拦截”。

答案2

简短的回答是肯定的。您可以使用 nginx 作为反向代理。但您的用例不清楚。

答案3

如果您希望通过 SSL 传输 HTTPS,则可以使用 TCP 代理。

选项 1:LVS TCP 转发

通过kubernetes客户端/服务器证书认证测试。

选项 2:使用 nginx 流代理 http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html 未经测试。

只要代理不干扰 HTTPS 协议,就会有更多选择。

答案4

服务器可以检查客户端发送的第一个 TLS 数据包中纯文本形式的 SNI(服务器名称标识符,即主机名),然后透明地将 TCP 数据包转发到另一台服务器,而无需解码数据。这对于在同一 IP 上托管多个具有自己的 SSL 证书(代理可能根本不了解这些证书)的服务非常有用。

我不知道有任何代理实现了这一点,并且它不适用于不发送 SNI 的客户端,或者在将来采用加密 SNI 时也不适用。

通常所有反向代理(包括 nginx)都只需解码 SSL,然后与后端服务器建立另一个 SSL 连接(如果在 proxy_pass 中使用 https)。

相关内容