O proxy reverso Nginx funciona apenas na rede interna

O proxy reverso Nginx funciona apenas na rede interna

Eu queria atingir o objetivo a seguir e fazê-lo funcionar em uma rede interna, porém isso não funciona externamente.

Objetivo: implantar o nginx para reverter servidores proxy n com diferentes endereços IP privados e apenas abrir as portas 80/443 no roteador e encaminhá-lo para o servidor Nginx no backend.

Ngix versão 1.18.0 no Ubuntu 22.04 LTS (Jammy Jellyfish)

Eu tenho um nome de domínio que aponta para o IP público do meu roteador e tenho uma configuração de proxy reverso nginx que só funciona bem quando estou conectado ao wifi doméstico (rede interna), mas os servidores back-end não estarão acessíveis se eu tentar meu LTE no meu telefone, por exemplo.

Aqui está meu proxy reverso.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 mais informações, vi no telefone que o navegador estava tentando acessar o endereço IP privado 192.xxx, então tentei fazer outra regra de encaminhamento de porta no roteador e apontar para aquele servidor, mas ainda obtive o mesmo erro inacessível em meu telefone depois de substituir o ip privado pelo ip público do roteador com aquela porta recém-aberta. Também permiti que a regra de firewall desse servidor aceitasse tcp/udp em sua porta e garantisse que nada estava a caminho, mas ainda sem sorte.

Então, minha pergunta é: é possível atingir esse objetivo com o proxy reverso nginx?

Por favor, deixe-me saber se você precisar de mais informações.

Obrigado,

Responder1

Ok, descobri, era meu roteador. Ativei o DMZ e adicionei o servidor Nginx como host DMZ e agora ele está acessível pela Internet.

Duas postagens me ajudaram a descobrir isso:

Postagem de superusuário

Postagem Stackoverflow

Obrigado,

informação relacionada