¿Cómo responder a la verificación de estado de http en una URL particular mientras se redirige otro tráfico?

¿Cómo responder a la verificación de estado de http en una URL particular mientras se redirige otro tráfico?

Antecedentes: estoy intentando configurar un grupo de instancias en la plataforma en la nube de Google. El grupo de instancias consta de varias instancias nginx cuyo trabajo es simplemente redirigir el tráfico https entrante a un sitio externo. Si el tráfico entrante es http, se convertirá a https.

Para que el grupo de instancias funcione, debe responder a una solicitud de verificación de estado (en protocolo http o https) y devolver 200.

El problema que tengo es cómo definir dicha configuración de nginx.

Este es mi primer corte. Solo maneja la redirección.

    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;
    }

Configuré la URL de verificación de estado en '/_check' con el protocolo http. Este es mi primer intento:

    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;
    }

El servidor nginx responde con un 404.

Luego intenté pasar location a otra serverdefinición:

    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;
    }

Me da el mismo resultado. Esto es lo que veo en el registro de acceso.

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

Si revierto el cambio a mi primer intento y cambio la verificación de estado para usar https(como en la siguiente captura de pantalla),

ingrese la descripción de la imagen aquí

En su lugar, obtengo 301. Me parece que _checkla regla de redirección anula la URL.

Mi pregunta: ¿Cómo puedo modificar nginx para cumplir con el requisito?

Respuesta1

Puede configurar la verificación de estado para que funcione con cualquier puerto que defina, como se indica en ladocumentación. Puede utilizar la interfaz de usuario o la línea de comando al crear la verificación de estado:

$ 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] 

En el PUERTO de la bandera puede configurar cualquiera de su elección. Luego tendrías que configurar tu aplicación para responder.

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

Esto evitaría que las solicitudes de verificación de estado sean redirigidas con el resto de su tráfico.

información relacionada