HAProxy - 发布维护页面

HAProxy - 发布维护页面

有没有一种简单的方法可以禁用 haproxy 中的所有后端,而是提供适当的维护页面(用于 http 请求)?

我读了一些关于禁用选项的内容,我理解它是针对每个服务器的,但我想知道是否有办法简单地停止到所有后端的流量?

答案1

我们使用关键字backup来实现这一点。请参见以下示例:

listen example_com 0.0.0.0:8001
...
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www.example.com\r\nUser-Agent:\ HAProxy
server  web01 10.1.31.21:80 cookie cookie_web01 check inter 5000 rise 2 fall 5 disabled
server  web02 10.1.31.22:80 cookie cookie_web02 check inter 5000 rise 2 fall 5 disabled
server  prx   10.1.31.10:9000  backup

此处,两个服务器web01web02均设置为disabled,在这种情况下,将使用 10.1.31.10:9000 上的backup服务器,该服务器提供维护页面。我们例子中的服务器是 HAProxy 服务器本身,并在端口 9000 上运行 Apache HTTPD,提供维护内容:prxprx

<VirtualHost *:9000>
    ServerName  example.com
    ServerAdmin [email protected]

    DocumentRoot /var/www/example.com/errors/
    <Directory /var/www/example.com/errors/>
        Options -Indexes
    </Directory>

    RewriteEngine On
    RewriteCond %{DOCUMENT_ROOT}/systemDown.html -f
    RewriteCond %{SCRIPT_FILENAME} !systemDown.html
    RewriteRule ^.*$ /systemDown.html [R=503,L]
    ErrorDocument 503 /systemDown.html

</VirtualHost>

答案2

这篇博文帮助了我:https://rimuhosting.com/knowledgebase/creating-a-maintenance-page-for-your-site

它建议设置/自定义 503 错误处理程序:

errorfile 503 /var/www/503maintance.html

笔记:您需要在错误处理程序文件中包含 http 标头:

HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html

答案3

那么重定向或 redir 怎么样

一个简单的 redir 示例

server srv1 10.0.0.10:80 redir http://maintenance.domain.com check

可以在所有默认选项中设置重定向。

答案4

您可以指定没有服务器指令的后端,而只指定 503 错误页面。
您唯一需要做的就是(临时)更改选项default_backend,或者您可以创建一个acl

frontend public

    #  default_backend www
    default_backend www-maintenance

backend www-maintenance
    errorfile       503 /etc/haproxy/error/503.http

backend www
    server www      10.0.0.1:8080 check

相关内容