
Quería lograr el siguiente objetivo y hacerlo funcionar en una red interna, sin embargo, esto no funciona externamente.
Objetivo: implementar nginx para invertir n servidores proxy con diferentes direcciones IP privadas, y solo abrir los puertos 80/443 en el enrutador y reenviarlos al servidor Nginx en el backend.
Ngix versión 1.18.0 en Ubuntu 22.04 LTS (Jammy Jellyfish)
Tengo un nombre de dominio que apunta a la IP pública de mi enrutador y tengo una configuración de proxy inverso nginx que solo funciona bien cuando estoy conectado a una red wifi doméstica (red interna), pero no se podrá acceder a los servidores backend si pruebo mi LTE en mi teléfono, por ejemplo.
Aquí está mi proxy inverso.conf:
server {
server_name my.domainname.com;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/ssl/certs/localhost.crt;
ssl_certificate_key /etc/ssl/private/localhost.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
location /guac/ {
proxy_pass http://privateip1:port/guacamole/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_cookie_path /guacamole/ /guac/;
access_log off;
}
location / {
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_pass http://privateip2:port;
}
location /api {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://privateip:port;
}
}
server {
listen 80;
listen [::]:80;
server_name my.domainname.com;
return 301 https://$server_name$request_uri;
}
Para obtener más información, vi en el teléfono que el navegador intentaba acceder a la dirección IP privada 192.xxx, luego intenté crear otra regla de reenvío de puerto en el enrutador y apuntarlo a ese servidor, pero aún así recibí el mismo error de inalcanzable. mi teléfono después de reemplazar la ip privada con la ip pública del enrutador con ese puerto recién abierto. También permití que la regla del firewall en ese servidor aceptara tcp/udp en su puerto y me asegurara de que no hubiera nada en camino, pero aún así no tuve suerte.
Entonces, mi pregunta es, ¿es posible lograr este objetivo con el proxy inverso nginx?
por favor déjeme saber si usted necesita mas información.
Gracias,
Respuesta1
Ok, lo descubrí, era mi enrutador. Encendí DMZ y agregué el servidor Nginx como host DMZ y ahora se puede acceder a él desde Internet.
Dos publicaciones me ayudaron a resolver esto:
Publicación de desbordamiento de pila
Gracias,