HAProxy Proxy Protocol
约 2 分钟阅读
- HAProxy Protocol - 主要用于保留原 IP
- 希望基于来源 IP 做策略的一般都会支持
- proxy-protocol.txtGitHub Filehaproxy/haproxy/doc/proxy-protocol.txt
- v1 - 明文
PROXY TCP4 255.255.255.255 255.255.255.255 65535 65535\r\n\r\n - v2 - 支持二进制,支持更多协议
- v1 - 明文
- 使用场景
- 想要知道原始 IP - 基于 IP 过滤
- 支持的服务
- haproxy, nginx, varnish, stud, stunnel
- postgres - PROXY protocol support
- 有 patch 还没合并
- 希望基于来源 IP 做策略的一般都会支持
- 参考
# 测试
# 如果协议不匹配则会
# curl: (56) Recv failure: Connection reset by peer
curl --haproxy-protocol 127.0.0.1HAProxy
frontend http
mode http
bind 0.0.0.0:80 name v4
bind :::80 name v6
tcp-request connection expect-proxy layer4
frontend https
mode http
bind 127.0.0.1:443 name v4 crt /etc/haproxy/certs/frontend ssl alpn h2,http/1.1 accept-proxy
bind :::443 name v6 crt /etc/haproxy/certs/frontend ssl v4v6 alpn h2,http/1.1 accept-proxy
frontend ssl
mode tcp
bind 0.0.0.0:443 name v4
bind :::443 name v6 v4v6
tcp-request connection expect-proxy layer4backend be
server svr 192.168.1.2:443 check send-proxy# CURL 测试 proxy protocol
curl --haproxy-protocol 192.168.1.2tcp-request connection expect-proxy layer4 if { src -f proxies.lst }Nginx
http {
server {
listen 80 proxy_protocol;
listen 443 ssl proxy_protocol;
#set_real_ip_from 192.168.1.0/24;
#real_ip_header proxy_protocol;
}
}
stream {
server {
listen 12345 proxy_protocol;
}
}关联信息
反向链接和本文引用的外部资料。
References
GitHub
4 条- AdguardTeam/AdGuardHome#2798github.com/AdguardTeam/AdGuardHome/issues/2798
- cloudflare/mmproxygithub.com/cloudflare/mmproxy
- haproxy/haproxy/doc/proxy-protocol.txtgithub.com/haproxy/haproxy/blob/master/doc/proxy-protocol.txt
- path-network/go-mmproxygithub.com/path-network/go-mmproxy
其他外链
2 条- docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocoldocs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol
- www.postgresql.org/message-id/flat/CABUevEz9TLONY3VtOMkUUKpf+Mb4XD79mXrtwUb-c9VwQ4ek-w@mail.gmail.comwww.postgresql.org/message-id/flat/CABUevEz9TLONY3VtOMkUUKpf%2BMb4XD79mXrtwUb-c9VwQ4ek-w%40mail.gmail.com