[〜#〜] edit [〜#〜]:以下の私の設定が実際に機能していることがわかります。以前は、ポート36000へのリダイレクトを取得していましたが、それはバックエンドアプリケーションの構成設定が原因でした。
私は完全にはわかりませんが、nginxを使用してリバースプロキシを設定したいと思うかもしれません。
サーバーでポート36000で実行されているアプリケーションがあります。デフォルトでは、ポート36000はパブリックにアクセスできません。nginxがパブリックURLをリッスンし、URLへのリクエストをすべてポート36000で実行されているアプリケーションに送信することを意図しています。プロセス全体で、ユーザーは自分のリクエストがサーバーのポート36000で実行されているアプリケーションに送信されていることを知らないはずです。
より具体的に言えば、私のURLが http://domain.somehost.com/ であると仮定します
http://domain.somehost.com/ にアクセスすると、nginxはリクエストを取得し、ポート36000のサーバーで既に実行されているアプリケーションにリダイレクトします。アプリケーションは何らかの処理を行い、返答。ポート36000は一般公開されておらず、URLの一部として表示されるべきではありません。
私は次のような設定を試しました:
server {
listen 80;
server_name domain.somehost.com
location / {
proxy_pass http://127.0.0.1:36000;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
それを私のメインのnginx.confに含める
ただし、ポート36000をパブリックにアクセス可能にする必要があるため、これを回避しようとしています。ポート36000も、Webブラウザーで転送されたURLの一部として表示されます。
同じことをする方法はありますか?ポート36000をアクセス可能にせずに?
ありがとうございました。
編集:以下の設定は、動作中のnginx設定からのもので、ホスト名とポートが変更されています。
ポート36000でリッスンしているサーバーをupstream
サーバーとして設定できる必要がある場合があります( http://nginx.org/en/docs/http/ngx_http_upstream_module.html を参照) 。
server {
listen 80;
server_name domain.somehost.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $Host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:36000/;
proxy_redirect http://localhost:36000/ https://$server_name/;
}
}