Verificação de integridade do contêiner Nginx para o AWS-ALB

1

Eu preciso ter um caminho de verificação de integridade para a configuração do ALB que aponte para um servidor que tenha o contêiner do docker Nginx. Eu não tenho acesso dentro do servidor EC2 para adicionar um arquivo lá. Eu posso simplesmente adicionar algo no Docker-Container

Eu tentei a solução a seguir, no entanto, não funciona para mim porque eu tenho outro bloco no meu arquivo de configuração que o impede, eu acho.

Solução Nginx para Amazon AWS Verificações de saúde de ELB - devolver 200 sem IF

Meu arquivo de configuração é semelhante ao seguinte:

server 
{    
   listen      443 ssl http2;
   server_name     server-test.com;
   access_log  /var/log/nginx/nginx.access.log;
   error_log   /var/log/nginx/nginx.error.log;
   ssl    on;
   ssl_certificate    /etc/nginx/ssl/cert.pem;
   ssl_certificate_key    /etc/nginx/ssl/server.key;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
   ssl_session_timeout 1d;
   ssl_session_cache builtin:1000 shared:SSL:10m;
   ssl_session_tickets off;

   location /
   {
      proxy_pass         http://server-test.io:5015/;
      proxy_redirect     off;

      ##proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

      client_max_body_size       10m;
      client_body_buffer_size    128k;

      proxy_connect_timeout      90;
      proxy_send_timeout         90;
      proxy_read_timeout         90;

      proxy_buffer_size          4k;
      proxy_buffers              4 32k;
      proxy_busy_buffers_size    64k;
      proxy_temp_file_write_size 64k;
   }
 }
...
...
...

# Health check url
server {
  location /elb-status {
    access_log off;
    return 200 'A-OK!';
    add_header Content-Type text/plain;
  }
}
# Redirect non-existing domains to 404
server {
  server_name _;
  listen 80 default_server;
  return 404;
}
server {
  server_name _;
  listen 443 ssl;
  ssl_certificate    /etc/nginx/ssl/cert.pem;
  ssl_certificate_key    /etc/nginx/ssl/server.key;
  return 404;
}

Quando abro o servidor com path / elb-status, ele me fornece 404 Not Found. E também o status do servidor sob LoadBalancer é unhealty. Eu acho que é por causa do bloco: "Redirecionar domínios não existentes", mas eu preciso ter esse bloco também.

Qualquer ajuda seria apreciada.

Editado com base na resposta do Andy:

O contêiner Nginx usa as duas portas 80 e 443, configurei o grupo de destino para os servidores, que incluem o contêiner do Docker Nginx, com base nessas portas, mas a verificação de integridade dos servidores ainda é insalubre.

Existe algo que estou sentindo falta aqui?

    
por Matrix 18.09.2017 / 16:45

1 resposta

2

Que tal executar o bloco server contendo location /elb-status em outra porta?

Ao criar o ALB, há um menu suspenso Advanced health check settings . Nessas configurações, você pode substituir a porta de verificação de integridade. Você pode definir a porta para algo como 8080 e, em seguida, seu server se torna:

server {
  listen 8080;
  location /elb-status {
    access_log off;
    return 200 'A-OK!';
    add_header Content-Type text/plain;
  }
}

Não há necessidade de roteamento baseado em host virtual para verificações de integridade nessa configuração. A porta 8080 seria dedicada apenas à verificação de integridade.

Não se esqueça de abrir a porta apropriada em seu grupo de segurança entre as instâncias ALB e EC2, se você optar por seguir esse caminho.

    
por 19.09.2017 / 05:18