
次の目標を達成し、内部ネットワークで動作させたいのですが、外部では動作しません。
目標: 異なるプライベート 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 つの投稿が役立ちました。
ありがとう、