Add support for proxy-awareness headers: X-Forwarded-For, X-Forwarded-Port, X-Forwarded-Proto, X-Forwarded-Host, and X-Request-ID
- Updated HAProxy configuration template to set all standard proxy headers for HTTP requests. - Added support for a unique request ID via `unique-id-format` and `unique-id-header` directives. - Implemented E2E tests for header validation, request correlation, and configuration correctness. - Enhanced documentation to explain usage and examples of proxy headers. - Updated CI workflows to include E2E tests for proxy headers.
This commit is contained in:
parent
4aba68dd37
commit
776f216a36
19 changed files with 480 additions and 4 deletions
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
@ -55,6 +57,8 @@ backend srv_hostssl_local_443
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 test2_processor_docker:8080 check weight 1
|
||||
backend srv_host2_local_443
|
||||
balance roundrobin
|
||||
|
|
@ -62,6 +66,8 @@ backend srv_host2_local_443
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 test_processor_docker:9000 check weight 1
|
||||
|
||||
frontend http_in_80
|
||||
|
|
@ -78,6 +84,8 @@ backend srv_host1_local_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 test_processor_docker:8080 check weight 1
|
||||
|
||||
frontend http_in_90
|
||||
|
|
@ -96,6 +104,8 @@ backend srv_host2_local_90
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 test_processor_docker:9000 check weight 1
|
||||
|
||||
backend certbot_backend
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
@ -42,6 +44,8 @@ backend srv_phpapp_local_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 /run/php/php-fpm.sock check weight 1 proto fcgi
|
||||
backend srv_phpapp-tcp_local_80
|
||||
balance roundrobin
|
||||
|
|
@ -49,6 +53,8 @@ backend srv_phpapp-tcp_local_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 172.17.0.3:9000 check weight 1 proto fcgi
|
||||
|
||||
backend certbot_backend
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
@ -65,6 +67,8 @@ backend srv_test_example_org_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 f5c645a0dfc6:80 check weight 1
|
||||
server srv-1 b63438410b6a:80 check weight 1
|
||||
backend srv_test2_example_org_80
|
||||
|
|
@ -73,6 +77,8 @@ backend srv_test2_example_org_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 83d57d592e26:8080 check weight 1
|
||||
|
||||
frontend http_in_443
|
||||
|
|
@ -89,6 +95,8 @@ backend srv_test_example_org_443
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 f5c645a0dfc6:80 check weight 1 verify none
|
||||
server srv-1 b63438410b6a:80 check weight 1 verify none
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
@ -38,6 +40,8 @@ backend srv_www_helloworld_com_19901
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 test_nginx.2.t5r94mjlced7m3t5orfjbowmm:80 check weight 1
|
||||
server srv-1 test_nginx.1.p552hqxkdx88narjrp5kouwb2:80 check weight 1
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
@ -64,6 +66,8 @@ backend srv_www_helloworld_com_19901
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 3e63154954b0:80 check weight 1
|
||||
server srv-1 eb294c110eb1:80 check weight 1
|
||||
backend srv_hello_com_19901
|
||||
|
|
@ -72,6 +76,8 @@ backend srv_hello_com_19901
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 3e63154954b0:80 check weight 1
|
||||
server srv-1 eb294c110eb1:80 check weight 1
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
@ -40,6 +42,8 @@ backend srv_host2_local_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 3571640c480a:80 check weight 1
|
||||
backend srv_host1_local_80
|
||||
balance roundrobin
|
||||
|
|
@ -47,6 +51,8 @@ backend srv_host1_local_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 5b69bc7fea1b:80 check weight 1
|
||||
|
||||
frontend http_in_443
|
||||
|
|
@ -67,6 +73,8 @@ backend srv_host2_local_443
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 3571640c480a:8080 check weight 1
|
||||
backend srv_host1_local_443
|
||||
balance roundrobin
|
||||
|
|
@ -74,6 +82,8 @@ backend srv_host1_local_443
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 5b69bc7fea1b:8080 check weight 1
|
||||
|
||||
backend certbot_backend
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
@ -58,6 +60,8 @@ backend srv_cadvisor_quantum_example_org_31337
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 my-stack_cadvisor:8080 check weight 1
|
||||
backend srv_node-exporter_quantum_example_org_31337
|
||||
balance roundrobin
|
||||
|
|
@ -65,6 +69,8 @@ backend srv_node-exporter_quantum_example_org_31337
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 my-stack_node-exporter:9100 check weight 1
|
||||
|
||||
frontend http_in_443
|
||||
|
|
@ -90,6 +96,8 @@ backend srv_node-exporter_quantum_example_org_443
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 my-stack_node-exporter:9100 check weight 1
|
||||
backend srv_www_somehost_com_br_443
|
||||
balance roundrobin
|
||||
|
|
@ -97,6 +105,8 @@ backend srv_www_somehost_com_br_443
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 some-service:80 check weight 1
|
||||
|
||||
frontend http_in_80
|
||||
|
|
@ -118,6 +128,8 @@ backend srv_www_somehost_com_br_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 some-service:80 check weight 1
|
||||
|
||||
backend certbot_backend
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ global
|
|||
|
||||
defaults
|
||||
log global
|
||||
unique-id-format %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid
|
||||
unique-id-header X-Edge-Request-ID
|
||||
option httplog
|
||||
|
||||
timeout connect 3s
|
||||
|
|
@ -59,6 +61,8 @@ backend srv_host1_com_br_443
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 container:5000 check weight 1
|
||||
|
||||
frontend http_in_80
|
||||
|
|
@ -82,6 +86,8 @@ backend srv_host1_com_br_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 container:5000 check weight 1
|
||||
backend srv_host2_com_br_80
|
||||
balance roundrobin
|
||||
|
|
@ -89,6 +95,8 @@ backend srv_host2_com_br_80
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 other:3000 check weight 1
|
||||
|
||||
frontend http_in_8080
|
||||
|
|
@ -105,6 +113,8 @@ backend srv_host3_com_br_8080
|
|||
option forwardfor
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
http-request add-header X-Forwarded-Proto https if { ssl_fc }
|
||||
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
||||
http-request set-header X-Request-ID %[uuid()]
|
||||
server srv-0 domain:8181 check weight 1
|
||||
|
||||
backend certbot_backend
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue