配置HAProxy以处理HTTP和HTTPS的同源代理需要进行一些设置。以下是一个简单的HAProxy配置文件示例,用于代理HTTP和HTTPS流量到同一源服务器:
- global
- log /dev/log local0
- log /dev/log local1 notice
- chroot /var/lib/haproxy
- stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
- stats timeout 30s
- user haproxy
- group haproxy
- daemon
-
- defaults
- log global
- mode http
- option httplog
- option dontlognull
- timeout connect 5000
- timeout client 50000
- timeout server 50000
-
- frontend http_front
- bind *:80
- mode http
- default_backend http_back
-
- frontend https_front
- bind *:443
- mode tcp
- default_backend https_back
-
- backend http_back
- mode http
- balance roundrobin
- option forwardfor
- http-request set-header X-Forwarded-Port %[dst_port]
- http-request add-header X-Forwarded-Proto https if { ssl_fc }
- server webserver 192.168.1.100:80 check
-
- backend https_back
- mode tcp
- balance roundrobin
- server webserver 192.168.1.100:443 check
上述配置包含两个前端(http_front
和https_front
)和两个后端(http_back
和https_back
)。其中,http_front
监听端口80并将流量代理到HTTP后端,https_front
监听端口443并将流量代理到HTTPS后端。
请注意,HTTPS代理使用了mode tcp
而不是mode http
,因为在TCP代理模式下,HAProxy无需解密和重新加密HTTPS流量,而是直接将整个TLS流量传递给后端服务器。
在实际使用中,请根据你的环境和需求进行适当的调整。确保将192.168.1.100:80
和192.168.1.100:443
替换为你实际的后端服务器地址和端口。同时,你可能需要配置SSL证书和其他安全性设置,具体取决于你的使用场景。