配置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证书和其他安全性设置,具体取决于你的使用场景。