我正在使用 haproxy 1.5.18,它执行 SSL 终止并使用 ACL 重定向到各种后端。
如果后端返回 404,我想将用户(302)重定向到其他页面。最好的方法是什么?
我发现了一个线程约会 2009并使用 rsprep 解决了问题。这仍然是可行的方法吗?
答案1
frontend fe
acl not_found status 404
http-response set-header Location https://google.com/ if not_found
http-response set-status 302 if not_found
看起来该http-response redirect
语法在 haproxy 1.8 中有效,但是在我们使用的 ubuntu 版本中,它在 1.9 中以一种奇怪的方式失败,而在 2.0 中根本不起作用。
答案2
最后我得到了一些有用的东西。
欢迎任何更好的选择。
frontend fe
bind 0.0.0.0:81
use_backend be
backend be
mode http
acl not_found status 404
rsprep ^HTTP/1.1\ 404\ (.*)$ HTTP/1.1\ 302\ Found\nLocation:\ / if not_found
server server1 127.0.0.1:80 check
答案3
您可以使用类似的东西:
listen fe
bind 0.0.0.0:82
acl not_found status 404
http-response redirect code 302 location https://google.fr if not_found
server server1 127.0.0.1:80 check