Tengo 2 API y un front-end que funcionan en contenedores docker. Todos se pueden crear a través de docker-compose y tengo un proxy inverso Nginx que debería enrutarlos usando sus nombres de host, es decir api-1.my-project.localhost . De hecho, he tenido este proceso funcionando, pero de vez en cuando, como esta mañana, obtengo el "Dominio inexistente" o "No podemos encontrar este sitio" cuando lo visito usando estos nombres de host.
No creo que docker-compose.yml sea tan importante, pero lo he incluido aquí:
version: "3.2" services: api-1: # Runs on port 5000 image: my-companies-docker-registry.api-1 api-2: # Runs on port 5000 image: my-companies-docker-registry.api-2 main-front-end: # Runs on port 3000 image: my-companies-docker-registry.main-front-end my-project: image: nginx depends_on: - api-1 - api-2 - main-front-end ports: - 80:80 volumes: - type: bind read_only: true source: ./nginx target: /etc/nginxMi configuración de nginx se ve así:
events {} http { # Api 1 upstream api-1{ server api-1:5000; } server { listen 80; server_name api-1.my-project.localhost; location / { proxy_pass http://api-1; } } # Api 2 upstream api-2 { server api-2:5000; } server { listen 80; server_name api-2.my-project.localhost; location / { proxy_pass http://api-2; } } # Main Front end upstream main-front-end { server main-front-end:3000; } server { listen 80 default_server deferred; server_name my-project.localhost www.my-project.localhost; location / { proxy_pass http://main-front-end; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } } } El objetivo de esto es que pueda acceder al sitio usando http://my-project.localhost y las API usando api-1.my-project.localhost y api-2.my-project.localhost . Como listen 80 default_server deferred al visitar http://localhost , puedo presionar nginx, lo que me permite ver mi sitio front-end. Entonces docker-compose ha enlazado los puertos correctamente.
En algún momento en el pasado, pude acceder a los sitios usando el sufijo my-project.localhost pero ahora ya no es así. Este sitio sugiere agregar una entrada de host para cada sitio, no recuerdo haber hecho esto antes, ya que hay muchos sitios, esto habría tomado un tiempo, pero es posible que lo haya hecho y ahora se hayan eliminado. También soy consciente de que Nginx no es Docker, por lo que no tengo idea de cómo esos nombres de host se habrían extraído y agregado al proceso de resolución de host de mis máquinas.
¿Cómo podría haber funcionado esto antes y ahora no? ¿Y cómo puedo hacer que mi configuración funcione sin hacer cambios manuales en el archivo del host?