• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

318
Views
NGINX no funciona cuando proxy_set_header está configurado en $host

He estado configurando un docker-compose simple para una aplicación Django, en la que tengo 3 contenedores: la aplicación Django, un contenedor Postgres y NGINX. Configuré con éxito tanto Django como Postgres y probé la conexión directamente a sus contenedores, por lo que ahora lo único que quedaba era configurar NGINX en el archivo docker-compose. Usé el siguiente archivo NGINX default.conf , de otro repositorio de plantillas:

 upstream django { server app:8000; } server { listen 80; server_name localhost; location / { try_files $uri @proxy_to_app; } location @proxy_to_app { proxy_pass http://django; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; } location /static/ { autoindex on; alias /static/; } location /media/ { autoindex on; alias /media/; } }

Y este fue mi archivo docker-compose:

 version: "2" services: nginx: image: nginx:latest container_name: NGINX ports: - "80:80" - "443:443" volumes: - ./test:/djangoapp/test - ./config/nginx:/etc/nginx/conf.d - ./test/static:/static depends_on: - app app: build: . container_name: DJANGO command: bash -c "./wait-for-it.sh db:5432 && python manage.py makemigrations && python manage.py migrate && gunicorn test.wsgi -b 0.0.0.0:8000" depends_on: - db volumes: - ./djangoapp/test:/djangoapp/test - ./test/static:/static expose: - "8000" env_file: - ./config/djangoapp.env db: image: postgres:latest container_name: POSTGRES env_file: - ./config/database.env

Pero por alguna razón, no pude conectarme en la aplicación Django a través de localhost:80 (el navegador siempre me arrojaba un error 502 y el contenedor no registraba nada cuando lo intentaba). Después de mucho solucionar problemas, descubrí que la línea infractora era proxy_set_header Host $host; , y comentarlo hizo que me conectara con éxito a la aplicación Django a través de localhost. Entonces, el problema era que mi configuración de NGINX tenía que usar la variable proxy_host en su lugar.

El problema es que no tengo idea de por qué sucedió eso en primer lugar, porque mirando esta otra pregunta ( Nginx: cuándo usar proxy_set_header Host $host vs $proxy_host ), se suponía que debía usar $host para proxy desde mi aplicación Django , y otros ejemplos de configuración de NGINX también configuran el host de esa manera.

Es posible que me esté perdiendo algo, ya que NGINX es un poco confuso para mí, pero no entiendo por qué no pude conectarme y NGINX no estaba registrando nada antes de comentar esa línea.

about 3 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error