Redirect HAProxy在302重定向之前添加一些头

Redirect HAProxy在302重定向之前添加一些头,redirect,header,add,haproxy,Redirect,Header,Add,Haproxy,我正在尝试向定向到特定端口的响应添加一些安全标头。 我配置了以下前端: frontend desenv_ext_1 bind *:80 bind *:443 ssl crt /etc/ssl/certs/cert.pem mode http option tcplog default_backend desenv_1 timeout client 5m #ACL to new attempt acl header_c dst_port 80 #Attempt

我正在尝试向定向到特定端口的响应添加一些安全标头。 我配置了以下前端:

frontend desenv_ext_1 
bind *:80 
bind *:443  ssl crt /etc/ssl/certs/cert.pem 
mode http 
option tcplog 
default_backend desenv_1 
timeout client          5m

#ACL to new attempt 
acl header_c dst_port 80

#Attempt with no ACL 
http-response set-header X-Frame-Options SAMEORIGIN 

#Attempt with ssl ACL 
http-response set-header Strict-Transport-Security max-age=31535400;\ includeSubDomains;\ preload; if {ssl_fc} 
http-response add-header Referrer-Policy no-referrer if !{ ssl_fc }

#Attempt with header_c ACL 
http-response set-header X-Content-Type-Options nosniff if header_c 
http-response add-header X-XSS-Protection 1;\ mode=block if header_c

#Attempt with rspadd 
rspadd X-Backen-Serve\ laranja if header_c 
rspadd X-Backend-Serve\ caju if HTTP

redirect scheme https if !{ ssl_fc }
您可以看到,在配置中,您以不同的方式进行了一些测试,但这两种方式都不起作用

重定向工作正常,但未在端口80响应中添加标头:

[root@managerr temp]# curl -I http://localhost
HTTP/1.1 302 Found
Cache-Control: no-cache
Content-length: 0
Location: https://localhost/
Connection: close
我希望到达端口80的请求添加以下标头,即使它们重定向到端口443:

Strict-Transport-Security max-age=31535400;\ includeSubDomains;\ preload;
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
X-XSS-Protection 1;\ mode=block
我需要的输出是:

HTTP/1.1 302 Found
Strict-Transport-Security max-age=31535400;\ includeSubDomains;\ preload;
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
X-XSS-Protection 1;\ mode=block
Cache-Control: no-cache
Content-length: 0
Location: https://localhost/
Connection: close
后端:

backend desenv_1
mode http
option tcplog
server manga x.x.x.x:80 check cookie manga
timeout connect        10s
timeout server          5m

我的HA代理版本1.5.18

重定向
http响应
之前执行,因此这些
http响应
永远不会执行

使用以下命令:

http-request redirect location "https://%[hdr(host)]%[url]\r\nX-Frame-Options: SAMEORIGIN\r\nReferrer-Policy: no-referrer"

这是一个聪明的破解,但会中断通过HTTP/2连接的客户端,例如在cURL
http2错误:接收到无效的HTTP头字段:帧类型:1,流:1,名称:[位置],值:[……]协议\u错误
。此处提供了更可靠的解决方法:。