NGINX 可以设置为支持 SSL 的反向透明代理吗?我有一个使用 HTTPS 的第三方应用程序。出于业务目的,需要记录来自 HTTPS 连接的一些请求数据。
答案1
是的你可以。 http://nginx.org/r/proxy_pass
从该指令的描述可以看出,它允许协议/地址方案proxy_pass
进行重定向。http
https
我可以想象,您甚至可以通过使用 来使用 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)。