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

521
Views
Conexión Nginx rechazada, al intentar conectarse a la aplicación de nodo como proxy inverso

Intento crear una aplicación web con contenedores docker y se me niega la conexión cuando intento ejecutar Nginx como un proxy inverso para mi aplicación de nodo. No estoy seguro de si es un problema de configuración del servidor nginx o un problema de configuración de docker-compose.

 [error] 5#5: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.20.0.1, server: foo.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:7770/", host: "foo.com"

Recibo este error cuando presiono foo.com, lo extraño es que mi aplicación funciona cuando se hace referencia al número de puerto, por lo que foo.com:7770 ejecuta la aplicación.

Mi configuración del servidor nginx:

 server { listen 80; server_name foo.com; port_in_redirect off; autoindex on; location / { proxy_pass http://127.0.0.1:7770; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }

Mi archivo Docker Compose: (Puede haber algunas cosas redundantes aquí)

 version: "2" services: nginx: build: ./nginx ports: - "80:80" depends_on: - app links: - app app: build: context: . dockerfile: DockerFile ports: - "7770:7770" links: - mongo depends_on: - mongo mongo: image: mongo ports: - "27017:27017" volumes_from: - mongodata depends_on: - mongodata mongodata: image: tianon/true volumes: - /data/db

Mi nodo Dockerfile:

 FROM node:latest ADD package.json /tmp/package.json RUN cd /tmp && npm install RUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app/ WORKDIR /opt/app ADD . /opt/app EXPOSE 7770 CMD ["npm", "start"]

Mi Dockerfile ngnix

 FROM nginx:1.10 COPY default.conf /etc/nginx/conf.d/default.conf

En npm start esto se ejecutará:

 app.get('*', function(req, res) { res.sendFile(path.join(__dirname, 'index.html')); }); app.listen(7770, function(err) { if (err) { console.log(err); return; } console.log('Listening at http://localhost:7770'); });

Esta es mi primera ejecución en Docker, por lo que es posible que haya confundido algunas cosas. También apunto foo.com a 127.0.0.1 en /private/etc/hosts.

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

c-holmes,

En primer lugar, debe recordar que cada contenedor tiene su propia pila de red, por lo que no puede usar localhost dentro del contenedor para llegar a un servicio que se ejecuta en el host de la ventana acoplable.

Para este proyecto específico, deberá señalar la directiva proxy_pass en la configuración de su servidor Nginx a un valor que llegue al contenedor de la app . Algo como:

proxy_pass http://app:7770;

Deberá hacerlo bien porque en el contexto docker-compose el nombre de su contenedor se asignará a una entrada DNS interna. Con eso, no necesitará publicar 7770 del contenedor de aplicaciones en el mundo exterior y si su MongoBD solo será accedido por su contenedor de aplicaciones, tampoco necesitará publicar el puerto 27017.

about 4 years ago · Santiago Trujillo Report

0

Si desea enrutar el tráfico de nginx a la app , debe usar la dirección IP o dns del contenedor de la app en proxy_pass . Con Docker Compose, los servicios pueden descubrirse entre sí con nombres de servicio, así que cambie en nginx conf

proxy_pass http://app:7770;

No necesita publicar el puerto 7770 en el mundo exterior. Además, para mongo no necesita publicar el puerto 27017.

about 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!