Nginx リバース プロキシは内部ネットワークでのみ動作します

Nginx リバース プロキシは内部ネットワークでのみ動作します

次の目標を達成し、内部ネットワークで動作させたいのですが、外部では動作しません。

目標: 異なるプライベート IP アドレスを持つ n 個のサーバーにリバース プロキシするように nginx を展開し、ルーターのポート 80/443 のみを開いて、バックエンドの nginx サーバーに転送します。

Ubuntu 22.04 LTS (Jammy Jellyfish) 上の Ngix バージョン 1.18.0

ルーターのパブリック IP を指すドメイン名があり、自宅の Wi-Fi (内部ネットワーク) に接続している場合にのみ正常に機能する nginx リバース プロキシ構成がありますが、たとえば携帯電話で 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 ホストとして追加したら、インターネットからアクセスできるようになりました。

これを理解するには、次の 2 つの投稿が役立ちました。

スーパーユーザーの投稿

Stackoverflowの投稿

ありがとう、

関連情報