我有一个 haproxy 实例,用于重定向某些 301 GET 请求。不幸的是,这些请求在 1024 字节处被截断。
经过大量阅读和实验,我相信问题在于捕获的长度capture.req.uri
,即 1024。但我无法成功增加该数字。我对指针持开放态度。
以下是我的最相关的片段haproxy.cfg
:
global
tune.bufsize 131072
tune.maxrewrite 65536
defaults
frontend www-https
bind 1.2.3.4:443 ssl crt /etc/haproxy/ssl/
declare capture request len 16382
declare capture response len 16382
http-request capture capture.req.uri len 16382
acl redirect_canonical ssl_fc_sni -i myname.example.com
http-request redirect code 301 location https://www.example.com%[capture.req.uri] if\
redirect_canonical
非常感谢您的任何建议。
答案1
然后需要两行用于匹配和重写。
首先,如果查询字符串存在,则重写:
http-request redirect location %[path,map(/etc/haproxy/redirects.map)]?%[query] code 301 if { path,map(/etc/haproxy/redirects.map) -m found } { query -m found }
然后,如果查询字符串不存在,则重写:
http-request redirect location %[path,map(/etc/haproxy/redirects.map)] code 301 if { path,map(/etc/haproxy/redirects.map) -m found } ! { query -m found }
您的地图文件仅是路径。