nginx - Nginx 流模块传递上游服务器的 FQDN 作为 TLS 握手的默认 SNI
问题描述
使用 nginx流模块,我想使用 ssl/tls 加密从 nginx 到上游的流量。这样做时,我们需要以某种方式将 SNI(服务器名称指示)传递给上游服务器。我知道proxy_ssl_name指令,但我的上游服务器块有多个服务器(以循环方式选择)配置了不同的 ssl 证书。理想情况下,我希望将上游服务器的 fqdn 作为 Tls 握手发生的默认 SNI(服务器名称指示)传递。proxy_ssl_name 的文档说 - “默认情况下,使用 proxy_pass 地址的主机部分”,在下面的示例中为“tcpupstream”。
例如,这是我的流配置的片段 -
stream {
server {
listen <port>;
...
...
proxy_pass tcpupstream;
proxy_ssl on;
proxy_ssl_verify on;
proxy_ssl_server_name on;
proxy_ssl_name ?
...
}
upstream tcpupstream {
server shop.abc.com:<port>;
server shop.def.com:<port>;
server shop.xyz.com:<port>;
}
}
我的 tcpupstream 中的每个服务器 (shop.abc.com/shop.def.com/shop.xyz.com) 基本上可以配置不同的 ssl 证书。那么如何将他们的 fqdn 作为默认 SNI 传递呢?
注意:对于 nginx http 模块,这里有一些方法可以做到这一点 - https://serverfault.com/questions/598202/make-nginx-to-pass-hostname-of-the-upstream-when- reverseproxying,但找不到流模块的任何解决方法。
任何帮助表示赞赏。
解决方案
推荐阅读
- javascript - 将数据从 React 表单发送到 Nodemailer
- bootstrap-4 - 如何在某些元素溢出卡或偏离正常流程的情况下创建 Bootstrap 4 卡
- pyqt - PyQt 中的 Windows 资源管理器导航栏
- c# - 离开 WebView 后播放 YouTube 视频
- javascript - 尝试对单个路径使用多个组件
- c - 动态结构的C动态数组
- python - 用于开发环境的 Docker 设置?
- c# - 如何在 c# 中正确连接和查询到 SQL Server 异步
- assembly - 如何在 x86 程序集中划分浮点数
- json - 将 .csv 文件发送到数据库:MariaDB