我有两个独立的系统通过双向 SSL 相互交互。
系统 A <--- 双向 ssl---> 第三方系统
我有一个用例,其中请求需要通过 Nginx 转发到第三方系统。如何避免在 Nginx 进行 SSL 握手并将其代理到原始系统或在 Nginx 和上游(第三方系统)之间进行握手。
系统 A <------>NGIXN<---2 WAY SSL--> 第三方系统
或者
系统 A <-----2 路 SSL--- (代理)NGIXN ---2 路 SSL--> 第三方系统
答案1
Nginx 有一个模块可以任意 TCP/UDP 代理。
你的 nginx 二进制文件必须使用选项进行编译--with-stream
看 https://nginx.org/en/docs/stream/ngx_stream_core_module.html
看 https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
答案2
在系统A和第三方系统的SSL机制不变的情况下,我认为你的系统中Nginx仅仅起到了代理的作用。
我建议只使用 Linux 内置的 IP 转发机制。启用中间机器的 IP 转发;在其防火墙上添加 IP 转发规则,并在需要时伪装源 IP。
中间机具有第三方允许的 IP。然后您告诉系统 A 在特定端口 7777 上连接到中间机。然后中间机使用伪装将本地端口 7777 转发到第三方 ip:port。第三方将看到您的中间机连接到它。