Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

542
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!