Como responder à verificação de integridade do http em um determinado URL ao redirecionar outros tráfegos?

2

Histórico: estou tentando configurar um grupo de instâncias na plataforma de nuvem do Google. O grupo de instâncias consiste em um número de instâncias nginx cujo trabalho é simplesmente redirecionar o tráfego de entrada de https para um site externo. Se o tráfego de entrada for http, ele será convertido para https.

Para o grupo de instâncias funcionar, ele deve responder a uma solicitação de verificação de integridade (no protocolo http ou https) e retornar 200.

O problema que tenho é como definir tal configuração nginx.

Este é o meu primeiro corte. Apenas lida com o redirecionamento

    server {
        listen 80;
        listen 443 ssl;
        ssl on;
        ssl_certificate /etc/nginx/ssl/examples.pem;
        ssl_certificate_key /etc/nginx/ssl/examples.key;
        server_name incoming.examples.com;
        return 301 https://target.examples.com$request_uri;
    }

Configurei o URL de verificação de integridade como '/ _check' com o protocolo http. Esta é minha primeira tentativa:

    server {
        listen 80;

        location /_check {
            return 200 'no content';
        }

        listen 443 ssl;
        ssl on;
        ssl_certificate /etc/nginx/ssl/examples.pem;
        ssl_certificate_key /etc/nginx/ssl/examples.key;
        server_name incoming.examples.com;
        return 301 https://target.examples.com$request_uri;
    }

O servidor nginx responde com um erro 404.

Em seguida, tentei mover location para outra definição de server :

    server {
        location /_check {
            return 200 'no content';
        }
        listen 80;
    }

    server {
        listen 80;
        listen 443 ssl;
        ssl on;
        ssl_certificate /etc/nginx/ssl/examples.pem;
        ssl_certificate_key /etc/nginx/ssl/examples.key;
        server_name incoming.examples.com;
        return 301 https://target.examples.com$request_uri;
    }

Isso me dá o mesmo resultado. Isso é o que eu vejo no log de acesso.

130.211.3.85 - - [18/Jan/2017:08:41:25 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.81 - - [18/Jan/2017:08:41:29 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.1.249 - - [18/Jan/2017:08:41:30 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.85 - - [18/Jan/2017:08:41:30 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.81 - - [18/Jan/2017:08:41:34 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.1.249 - - [18/Jan/2017:08:41:35 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.85 - - [18/Jan/2017:08:41:35 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.81 - - [18/Jan/2017:08:41:39 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.1.249 - - [18/Jan/2017:08:41:40 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0

Se eu reverter a alteração para minha primeira tentativa e alterar a verificação de integridade para usar https (como na captura de tela a seguir),

Eu recebo 301 em vez disso. Parece-me que o url _check é substituído pela regra de redirecionamento.

Minha pergunta: Como posso modificar o nginx para atender ao requisito?

    
por Anthony Kong 18.01.2017 / 09:54

1 resposta

1

Você pode definir a Verificação de saúde para funcionar com qualquer porta definida, conforme indicado no documentação . Você pode usar a interface do usuário ou a linha de comando ao criar a verificação de integridade:

$ gcloud compute health-checks create https NAME [--check-interval=CHECK_INTERVAL; default="5s"] [--healthy-threshold=HEALTHY_THRESHOLD; default=2] [--host=HOST] [--port=PORT; default=80] 

No flag PORT você pode configurar qualquer um de sua escolha. Então você teria que configurar seu aplicativo para responder a ele.

server {
        location /_check {
            return 200 'no content';
        }
        listen [PORT];

Isso evitará que as solicitações de verificação de integridade sejam redirecionadas com o restante do seu tráfego.

    
por 06.12.2017 / 15:27