用 HAProxy 服务器替换 Amazon LoadBalancer,将安全 HTTPS 转发到非安全 HTTP
Replacing Amazon LoadBalancers with HAProxy servers, forwarding secure HTTPS to non-secure HTTP
现在,我部署了一些 Amazon Elastic Load Balancer,因为我正在为域 *.mycompany.cxx 使用免费的 AWS SSL 证书。因此,当用户打开 https://service.mycompany.cxx 时,负载均衡器将请求转发到后端服务器端口 80 的非安全 HTTP 连接。
我想用一个带 HA 代理的 EC2 实例替换 Amazon 的负载均衡器。不要担心性能,因为它是针对开发环境的。
想法是这样的:
- 为我的域购买新的 SSL 证书 *。mycompany.cxx
- 同样配置HAProxy:在443端口接收HTTPS请求,转发到不同后端服务器的80端口。用户将始终使用 HTTPS 连接。在 HAProxy 服务器后面,连接将是 HTTP。
除了从 HTTPS 转发到 HTTP 之外,我知道如何配置所有内容。甚至,我不知道这是否可能,这是我的问题。有可能这样做吗?
编辑: 这种代理的名称是 SSL Termination Proxy (Wikipedia, DigitalOcean)。谢谢@MarkB
是的,有可能。
要让 HAProxy 接受 HTTPS 客户端并将它们的请求转发到侦听端口 8080 的本地非 HTTPS 服务器,您可能需要这样的东西:
frontend https
mode http
maxconn 1000
bind 0.0.0.0:443 ssl crt /etc/haproxy/certs/fullchain.pem
option forwardfor
reqadd X-Forwarded-Proto:\ https
use_backend app
backend app
mode http
server srv-app 127.0.0.1:8080 check
现在,我部署了一些 Amazon Elastic Load Balancer,因为我正在为域 *.mycompany.cxx 使用免费的 AWS SSL 证书。因此,当用户打开 https://service.mycompany.cxx 时,负载均衡器将请求转发到后端服务器端口 80 的非安全 HTTP 连接。
我想用一个带 HA 代理的 EC2 实例替换 Amazon 的负载均衡器。不要担心性能,因为它是针对开发环境的。
想法是这样的:
- 为我的域购买新的 SSL 证书 *。mycompany.cxx
- 同样配置HAProxy:在443端口接收HTTPS请求,转发到不同后端服务器的80端口。用户将始终使用 HTTPS 连接。在 HAProxy 服务器后面,连接将是 HTTP。
除了从 HTTPS 转发到 HTTP 之外,我知道如何配置所有内容。甚至,我不知道这是否可能,这是我的问题。有可能这样做吗?
编辑: 这种代理的名称是 SSL Termination Proxy (Wikipedia, DigitalOcean)。谢谢@MarkB
是的,有可能。
要让 HAProxy 接受 HTTPS 客户端并将它们的请求转发到侦听端口 8080 的本地非 HTTPS 服务器,您可能需要这样的东西:
frontend https
mode http
maxconn 1000
bind 0.0.0.0:443 ssl crt /etc/haproxy/certs/fullchain.pem
option forwardfor
reqadd X-Forwarded-Proto:\ https
use_backend app
backend app
mode http
server srv-app 127.0.0.1:8080 check