nginx stream代理多个网站
在一些特殊场景下,尤其是多网络区的环境中,难免使用proxy来代理请求。其中HTTPS会提供更安全的数据传输,同时也添加了代理配置的复杂性(特别是证书的管理)。
通过nginx ngx_stream_ssl_preread_module
模块,可以使用四层代理代理不同的服务。它允许从 ClientHello 消息中提取信息,而不会终止 SSL/TLS,例如提取通过 SNI 请求的服务器名称并保存在变量$ssl_preread_server_name中,于是我们可以通过对该变量进行转发请求到对应的上游服务。
配置示例如下:
proxy 1配置:
1 | stream { |
proxy 2 配置
1 | stream { |
做好域名解析后,在本地curl/浏览器访问资源,即可获得对应的资源。
1 | curl https://baidu.com |
参考文档
http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html: ngx_stream_ssl_preread_module 模块(1.11.5)允许从 ClientHello 消息中提取信息,而不会终止 SSL/TLS,例如提取通过 SNI 请求的服务器名称。默认情况下不构建此模块,您可以在构建时使用 –with-stream_ssl_preread_module 配置参数启用此模块。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论