Обратный прокси-сервер Nginx работает только во внутренней сети

Обратный прокси-сервер Nginx работает только во внутренней сети

Я хотел достичь следующей цели и заставить это работать во внутренней сети, однако это не работает во внешней сети.

Цель: Развернуть nginx для обратного прокси-сервера n с разными частными IP-адресами, а также открыть только порты 80/443 на маршрутизаторе и перенаправить их на сервер Nginx в бэкэнде.

Ngix версии 1.18.0 на Ubuntu 22.04 LTS (Jammy Jellyfish)

У меня есть доменное имя, которое указывает на публичный IP-адрес моего маршрутизатора, и у меня есть конфигурация обратного прокси-сервера nginx, которая работает хорошо только при подключении к домашнему Wi-Fi (внутренней сети), но внутренние серверы не будут доступны, если я, например, попробую подключиться к LTE на своем телефоне.

Вот мой файл reverse-proxy.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;
    }

Для получения дополнительной информации, я увидел на телефоне, что браузер пытался получить доступ к частному IP-адресу 192.xxx, затем я попытался создать другое правило переадресации портов на маршрутизаторе и указать его на этот сервер, но все равно получил ту же ошибку недоступности на моем телефоне после замены частного IP на публичный IP маршрутизатора с этим недавно открытым портом. Я также разрешил правилу брандмауэра на этом сервере принимать tcp/udp на его порту и убедиться, что ничего не происходит, но все равно безуспешно.

Итак, мой вопрос: возможно ли достичь этой цели с помощью обратного прокси-сервера nginx?

Если вам понадобится дополнительная информация, сообщите мне.

Спасибо,

решение1

Ладно, я разобрался, это был мой роутер. Я включил DMZ и добавил сервер Nginx как хост DMZ, и теперь он доступен из интернета.

Два поста помогли мне разобраться в этом:

пост суперпользователя

Пост Stackoverflow

Спасибо,

Связанный контент