使用事例:
- 80 と 443 (複数の仮想ホスト) の両方で実行される複数の Web サイト/サービスのフロントエンドとして nginx を使用します。
- http:8090 および https:8099 を提供する localhost でサービス x を実行する
ポートを指定せずに名前だけを使用してアクセスできるように、nginx を構成するにはどうすればよいですか。
これはかなり正常な設定です。通常どおり、Nginx で直接提供されるホストを構成します。80 と 443 の両方でリッスンする必要があるため、各ホスト エントリには次のものが含まれます。
server {
listen 80;
listen 443 ssl;
}
Nginx SSL ドキュメントには詳細が記載されています。
server{}
次に、1 つの定義のトラフィックをバックエンド サービスにプロキシします。
server {
server_name example.com;
location / { proxy_pass http://127.0.0.1:8090; }
}
バックエンド サーバーへのプロキシ接続は、'http' または 'https' のいずれか 1 つだけ必要です。2 つのサーバー間の接続が安全である場合は、https 経由で nginx に到達する接続であっても、「http」を使用できます。これは、サービスが同じマシン上にある場合に適しています。そうしないと、nginx とバックエンド サーバー間の接続を保護する必要がある場合に、すべてのトラフィックが https 経由でプロキシされる可能性があります。
ホストでは以下を使用します。
http {
server {
server_name ~^(www\.)?(?<domain>.+)$;
listen *:80;
location / {
proxy_pass $scheme://<origin>$uri$is_args$args;
include basic-proxy-settings.conf;
}
}
server {
server_name ~^(www\.)?(?<domain>.+)$;
listen *:443 ssl;
location / {
proxy_pass $scheme://<origin>$uri$is_args$args;
include basic-proxy-settings.conf;
}
include ssl-settings.conf;
}
}
これにより、上流のプロキシは、クライアントから安全でないリソースへのリクエストが行われた場合は HTTP を介してオリジン サーバーと通信し、安全なリソースへのリクエストが行われた場合は SSL/HTTPS を介して通信できます。また、オリジンサーバーが安全な接続へのリダイレクトの強制などを担当することもできます.
次回は、試したこと、うまくいったこと、うまくいかなかったことを詳しく説明したコード サンプルを提供してみませんか?