首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于HAproxy代理协议和内部重定向的Nginx配置

基于HAproxy代理协议和内部重定向的Nginx配置
EN

Server Fault用户
提问于 2017-08-08 13:09:40
回答 1查看 5.9K关注 0票数 1

我需要将HTTPS流从HAProxy重定向到Nginx,而不需要SSL终止,并且不丢失有关原始客户端IP的信息。不幸的是,我不能更改Nginx上默认的443站点的配置,因为它是由Synology配置维护的。

我在考虑在Nginx上新的侦听端口,接受来自HAProxy的代理协议,并将其内部重定向到本地443端口,无需SSL解码/编码,而是传递从HAProxy获取的原始客户端IP。这有可能吗?

编辑:背景是,我在同一个外部443端口上隧道化了OpenVPN和web服务,因此实际上如下所示:

代码语言:javascript
复制
router 443 TCP  ->  HAProxy -> SNI check -> stunnel -> OpenVPN
                                  |
                                  ------> SSL termination -> Nginx 443 HTTPS

我使用HAProxy是因为ngx_stream_ssl_preread_module在Synology的内置Nginx上不可用。

编辑:我认为情况和问题可以更通用:

代码语言:javascript
复制
Nginx:
port X accessed via proxy protocol with SSL/TLS
port Y

如何使用有关源客户端IP的信息将流从端口X传递到Y,而不需要SSL终止?在端口Y上使用proxy_protocol听指令是唯一可能的选择吗?

EN

回答 1

Server Fault用户

发布于 2017-08-11 14:25:19

一个可能的解决方案是使用HAProxy进行SSL桥接。这意味着HAProxy将:

  1. 解密SSL连接。

  1. 插入报头.

  1. 在与Nginx交谈时再次加密连接。

解密SSL连接需要HAProxy在HTTP模式下运行,但同时HAProxy应该接收到达同一443端口的隔离通信量。因此,我能想到的解决方案是首先通过一个虚拟后端来分割两个流量。

当然,这将带来额外的额外成本,但如果没有真正的高负荷,它将不会引人注目。

代码语言:javascript
复制
frontend ft_ssl
  bind *:443
  mode tcp 
  acl web_traffic req_ssl_sni -i <web-domain>
  acl stunnel_traffic req_ssl_sni -i <stunnel-domain>
  use_backend bk_ssl_dummy if web_traffic
  use_backend bk_ssl_stunnel if stunnel_traffic

backend bk_ssl_stunnel
  mode tcp
  server stunnel1 <IP>:<PORT> check

backend bk_ssl_dummy
  mode tcp 
  server web_ssl_offload 127.0.0.1:8888 send-proxy-v2-ssl-cn check

frontend ft_web_offload
  bind 127.0.0:8888 ssl crt <path-to-crt> accept-proxy
  mode http 
  http-request set-header X-Real-IP %[src]
  default_backend bk_ssl_nginx

backend bk_ssl_nginx
  mode http 
  server nginx1 <sIP>:443 ssl check

连接在路由到Nginx时会被重新加密,因为我们在服务器行中使用了ssl param。

将Nginx配置为使用proxy-protocl将使您拥有一个更简单的HAProxy conf,因此只有当您不能更改Nginx时,此解决方案才有意义。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/867502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档