Openshift + HAproxy 503 página personalizada

1

Estou usando o Status HTTP 503 e uma página em breve para o modo de manutenção.

Existe alguma maneira de obter a página 503 gerada pelo servidor do HAproxy em vez da página padrão em branco / indisponível?

Estou usando o Openshift + HAproxy + Cloudflare + PHP.

Obrigado antecipadamente.

Configuração do haproxy (alguns comentários foram removidos):

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:5000
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check
    
por PhCaetano 20.07.2016 / 22:38

2 respostas

0

Is there any way to get HAproxy serving server-side generated 503 page instead of the default blank/unavailable page?

Esta não é a pergunta que você deve fazer. O HAProxy sempre usa a resposta do servidor. O arquivo de erro é usado apenas para erros gerados internamente pelo HAProxy.

Se você verificar os registros do servidor da web, verá que essas solicitações específicas não estão sendo enviadas para o servidor da web.

Isso está acontecendo porque o HAProxy acha que seu servidor está inoperante ... porque está recebendo 503 do servidor em resposta à verificação de integridade.

Se o servidor estivesse retornando 502 ou 400 ou qualquer código de erro nas verificações de integridade, você ainda receberia o 503 do HAProxg porque o servidor está oficialmente desativado.

WARNING] 201/142518 (192371) : Server express/local-gear is DOWN, reason: Layer7 wrong status, code: 503, info: "HTTP status check returned code <3C>503<3E>", check duration: 87ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue

Você aparentemente redigiu a linha option httpchk da configuração que você postou, mas tem que estar lá, ou o HAProxy só faria uma verificação da camada 4, e isso não estaria acontecendo.

A solução mais simples é remover essa linha do backend ou da configuração padrão.

    
por 21.07.2016 / 06:41
0

Sim. Use a diretiva errorfile , por exemplo, via:

errorfile 503 /etc/haproxy/errors/503.http

A sintaxe é a seguinte:

errorfile <code> <file>

Citando os documentos:

<code> is the HTTP status code. Currently, HAProxy is capable of
       generating codes 200, 400, 403, 405, 408, 429, 500, 502, 503, and
       504.

<file> designates a file containing the full HTTP response. It is
       recommended to follow the common practice of appending ".http" to
       the filename so that people do not confuse the response with HTML
       error pages, and to use absolute paths, since files are read
       before any chroot is performed.

Por exemplo, o conteúdo do arquivo pode ser:

HTTP/1.1 503 Service Unavailable\r\n
Cache-Control: no-cache\r\n
Connection: close\r\n
Content-Type: text/html\r\n

<html> 
<head>
    <title>Service unavailable</title>
</head> 
<body>
    <h1>Service unavailable</h1>
</body> 

    
por 20.07.2016 / 22:53