
Estoy intentando configurar un proxy inverso para un contenedor acoplable usando nginx.
El contenedor acoplable está disponible y funciona en el puerto 8000.
Me gustaría poder acceder al contenedor a través de la dirección midominio.com:80/micontenedor.
El proxy inverso parece lograr comunicarse con el contenedor, pero cuando el contenedor solicita una redirección a su página de inicio de sesión, nginx intenta cargar la página de inicio de sesión en el puerto 80 en lugar de 8000, lo cual falla.
esta es mi configuración de nginx hasta ahora:
upstream docker-container {
server 127.0.0.1:8000;
}
server {
listen 80;
location /mycontainer {
proxy_redirect off;
proxy_set_header Host $http_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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://docker-container;
}
}
Esto es lo que obtengo cuando ejecuto wget -S 127.0.0.1/mycontainer
:
wget -S 127.0.0.1/mycontainer
--2021-08-29 20:30:12-- http://127.0.0.1/mycontainer
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 302 Found
Server: nginx/1.18.0 (Ubuntu)
Date: Sun, 29 Aug 2021 20:30:12 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 28
Connection: keep-alive
Content-Language: en
X-Frame-Options: SAMEORIGIN
X-Download-Options: noopen
X-Content-Type-Options: nosniff
Referrer-Policy: origin-when-cross-origin
X-XSS-Protection: 1; mode=block
Location: /login
Vary: Accept
Set-Cookie: some cookie
Location: /login [following]
--2021-08-29 20:30:12-- http://127.0.0.1/login <--- HERE IS THE PROBLEM. Should be 127.0.0.1:8000/login
Reusing existing connection to 127.0.0.1:80.
HTTP request sent, awaiting response...
HTTP/1.1 404 Not Found
Server: nginx/1.18.0 (Ubuntu)
Date: Sun, 29 Aug 2021 20:30:12 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
2021-08-29 20:30:12 ERROR 404: Not Found.
De ninguna manera soy un profesional en esto, así que estoy seguro de que hay muchos errores.
¿Cómo puedo hacer que las redirecciones automáticas apunten al puerto correcto (8000) y no al puerto 80?