Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 9418|Respuesta: 0

[Web] Implementa upstreams dinámicos usando el resolver de Nginx

[Copiar enlace]
Publicado en 27/7/2019 22:23:00 | | |
Recientemente, ha habido una necesidad de este aspecto en mi trabajo, el upstream es completamente dinámico, especificado por el cliente, hay algunos errores al principio y, finalmente, el servicio DNS se especifica a través del resolver, el proceso específico es el siguiente.

1. Empieza a pisar el pozo

La configuración de nginx es la siguiente:

Cuando envío este tipo de solicitud:


Se reportó el siguiente error:

access.log:
127.0.0.1 - - [14/Sep/2017:23:37:10 +0800] "GET / HTTP/1.1" 502 179 "-" "curl/7.29.0"

error.log:
2017/09/14 23:38:31 [error] 25307#25307: *48 sin resolver definido para resolverwww.baidu.com, cliente: 127.0.0.1, servidor: localhost, solicitud: "GET / HTTP/1.1", host: "127.0.0.1:8001"
Está claro que este problema indica que no especificar un resolver causa upstreamwww.baidu.com personalizados.

2. Utilizar Resolver para definir la resolución de nombres de dominio

La configuración modificada de nginx es la siguiente:

Ahora las solicitudes son normales 200:

req:
curl "127.0.0.1:8001/" -H "upstream-host:www.baidu.com" -voa
curl "127.0.0.1:8001/" -H "upstream-host:www.qq.com" -voa

access.log:
127.0.0.1 - - [14/Sep/2017:23:44:01 +0800] "GET / HTTP/1.1" 200 2381 "-" "curl/7.29.0"
127.0.0.1 - - [14/Sep/2017:23:44:07 +0800] "GET / HTTP/1.1" 200 244182 "-" "curl/7.29.0"
3. Instrucciones del resolver

La sintaxis del resolver es la siguiente:

Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default:    —
Context:    http, server, location
Puedes configurar varios servicios DNS: nginx usará sondeos para acceder a los servicios DNS, nginx almacenará en caché los resultados de la resolución de nombres de dominio DNS, el tiempo de caché se especifica por valid y IPv6 se usa para mostrar IPv6 encendido o desactivado.

resolver_timeout se utiliza para especificar el tiempo de espera para la resolución DNS.





Anterior:Comparte un software personal para construir FTP
Próximo:Alibaba Cloud OSS Nginx reverse proxy configuration
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com