如何基于SNI在nginx上透传SSL流量?

如何基于SNI在nginx上透传SSL流量?

在我当前的 nginx 配置中,我有多个

server {
  listen *:443;
  servername my_server_name;
  ...
}

块。这些块由第三方软件管理,我无法更改。

我可以通过添加另一个块轻松添加另一个由 nginx ssl 终止的域。

但是,我想在此 nginx 服务器上添加一个未通过 ssl 终止的域,但该域传递到另一台主机,该主机执行 ssl 终止。它应该像其他server_name配置一样通过 SNI 检测。

我想到了一些类似的事情:

server {
    listen *:443;
    server_name my_project.org;
    proxy_pass 10.1.1.3:443;
}

但这会导致proxy_pass is not allowed here错误。

我读过流模块流 ssl 预读模块,但无法真正弄清楚如何将其与现有的(不可更改的)nginx 服务器块相结合。

答案1

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass告诉在、和部分proxy_pass中允许。locationif in locationlimit_except

但是,如果使用server带有 TLS 的块,则server始终会终止 TLS。

为了通过 TLS,您需要使用该stream模块。

相关内容