使用 haproxy 在后端出现 404 时进行重定向

使用 haproxy 在后端出现 404 时进行重定向

我正在使用 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

相关内容