Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

531
Visualizações
¿Cómo hacer que NGINX vuelva a resolver DNS?

Tengo un nginx central que responde en router.mydomain.com. Tiene algunos proxypasses a diferentes nginxes:

 server { listen 8080; server_name nginx_server; port_in_redirect off; location / { root /html; index index.html index.htm; } location /site1/ { proxy_pass https://site1.mydomain.com; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } location /site2/ { proxy_pass https://site2.mydomain.com; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; }

Ambos sitios son nginxes alojados en un entorno kubernetes.

Ahora, el problema es que, cada vez que implemento el sitio 1 o el sitio 2, en kubernetes la ruta se actualiza correctamente, por lo que si https://site1.mydomain.com apuntaba a una instancia particular de Docker # 1, y la nueva implementación es una instancia de Docker # 2, la url https://site1.mydomain.com , luego apunte a la instancia de Docker #2.

Todo esto funciona bien, pero router.mydomain.com sigue apuntando a la IP que se resolvió primero en la instancia n.º 1.

 router ---> https://site1 ---> docker #1 (ip: 123.456.789) router ---> https://site1 ---> docker #1 (ip: 123.456.789) \--> docker #2 (ip: 234.567.890) router ---> https://site1 -X-> docker #1 (ip: 123.456.789) \--> docker #2 (ip: 234.567.890) router (still pointing to ip: 123.456.789) -X-> https://site1 ---> docker #2 (ip: 234.567.890)

¿Cómo puedo hacer que nginx "avise" que el dns cambió? ¿Debo desactivar el almacenamiento en caché de dns por completo? ¿Puedo hacer nginx cache dns por menos tiempo? ¿Cómo?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

nginx tiene su propio código de resolución sin bloqueo, pero para usarlo, debe especificar una directiva de resolver usando la resolución. Aquí puede encontrar algunos detalles técnicos de por qué los autores de nginx implementan dicho mecanismo. Puede usar su servidor de nombres local si tiene uno, o usar algo externo como el DNS público de Google (8.8.8.8, 8.8.4.4) o el DNS proporcionado por su ISP:

 resolver 8.8.8.8;

Puede especificar el tiempo de espera mientras los últimos nombres resueltos son válidos:

 resolver 8.8.8.8 valid=30s;

A menos que haga esto, nginx resolverá sus nombres de dominio desde el archivo de configuración solo una vez al inicio.

Para su caso, tiene sentido utilizar uno de los servidores de nombres autorizados para su dominio. Para obtener la lista de esos servidores, puede usar el siguiente comando:

 nslookup -type=ns mydomain.com

Su configuración final se verá algo así como

 server { listen 8080; server_name nginx_server; port_in_redirect off; resolver <your_authoritative_name_server> valid=<timeout>; location / { root /html; index index.html index.htm; } location /site1/ { proxy_pass https://site1.mydomain.com; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } location /site2/ { proxy_pass https://site2.mydomain.com; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } }

Como está trabajando con Docker, esta pregunta también puede ser de su interés: nginx en la ruta del proxy de Docker al subdominio

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda