TLに応答するようにどのように私はnginxのを設定することができます; DR:何を達成するためのいくつかの方法があります。ここを探しています。
が可能attack surface削減の原則に付着し、それが絶対に必要な場合を除き、パブリックインターネットにポートをさらさないために、通常は最善です。リバースプロキシは、これを達成するための優れた方法です。一般的に、あなたは、バックエンドのWebアプリケーションのすべてが逆ポート443でHTTPSを介してプロキシされるにしたいと思い、あなたはどちらか、各サービスにアクセスします。
- など
app1.example.com
とapp2.example.com
、またはなど異なるホスト名、とそのようなあなたが選択した方法に応じてexample.com/app1
とexample.com/app2
など、さまざまなサブディレクトリ、と
、構成がいずれかの以前のシナリオのために複数のserver
ブロックで、大きく異なる可能性があり、後者の場合はlocation
ブロックです。どちらの場合でも、upstream
とproxy_pass
の指示文を使用します。私は両方のシナリオの例を挙げます。
複数ホスト
あなたはフロントエンドのために複数のホスト名(または複数のポート)を使用している場合は、あなたが彼らのために複数のserver
ブロックを作成する必要があります:
# Nginx reverse-proxy configuration
upstream app1 {
server 10.176.225.83:8888;
}
upstream app2 {
server 10.176.225.83:8088;
}
upstream app3 {
server 10.176.225.83:8042;
}
upstream app4 {
server 10.176.225.83:8890;
}
server {
listen 443 ssl;
server_name app1.example.com;
ssl_certificate_key /path/to/your/ssl-key.pem;
ssl_certificate /path/to/your/ssl-cert.pem;
location/{
proxy_pass http://app1;
}
}
server {
listen 443 ssl;
server_name app2.example.com;
ssl_certificate_key /path/to/your/ssl-key.pem;
ssl_certificate /path/to/your/ssl-cert.pem;
location/{
proxy_pass http://app2;
}
}
server {
listen 443 ssl;
server_name app3.example.com;
ssl_certificate_key /path/to/your/ssl-key.pem;
ssl_certificate /path/to/your/ssl-cert.pem;
location/{
proxy_pass http://app3;
}
}
server {
listen 443 ssl;
server_name app4.example.com;
ssl_certificate_key /path/to/your/ssl-key.pem;
ssl_certificate /path/to/your/ssl-cert.pem;
location/{
proxy_pass http://app4;
}
}
ここで注意するべきいくつかのこと:
upstream
ディレクティブを使用して先頭にバックエンドが定義され、名前で参照できるようになりました。
- あなたはこのようにそれを行うにはしたくない場合は、あなたが
upstream
ブロックを省略することができ、かつproxy_pass
行は次のようになります。各アプリは異なるホスト名で提供されているのでproxy_pass http://10.176.225.83:8888;
- それぞれが独自の
server
ブロックを取得します。また、それぞれが異なるポートでサービスされている場合も同様です。
- 各
server
ブロックのssl_certificate
およびssl_certificate_key
は、証明書に複数のSANsを定義した場合、異なる証明書または同じ証明書を指すことができます。
- 各アプリケーションは、独自のホスト名から利用できるようになるフロントエンドサーバへのすべてのポイント:
- アプリ1:
https://app1.example.com
- アプリ2:
https://app2.example.com
- アプリ3:
https://app3.example.com
- アプリ4:
https://app4.example.com
の 複数ディレクトリ単一のホストとポートを使用して設定するために
、サブディレクトリからバックエンドのアプリケーションを提供するには、複数のlocation
ブロックを単一server
ブロックを使用することがあります:
# Nginx reverse-proxy configuration
upstream app1 {
server 10.176.225.83:8888;
}
upstream app2 {
server 10.176.225.83:8088;
}
upstream app3 {
server 10.176.225.83:8042;
}
upstream app4 {
server 10.176.225.83:8890;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate_key /path/to/your/ssl-key.pem;
ssl_certificate /path/to/your/ssl-cert.pem;
location /app1 {
proxy_pass http://app1;
}
location /app2 {
proxy_pass http://app2;
}
location /app3 {
proxy_pass http://app3;
}
location /app4 {
proxy_pass http://app4;
}
}
Aこの1で注意すべきいくつかのより多くの事:
- 我々はまだのようにすべての4つの
upstream
のサービスを、定義します前。そして、あなたが直接ルートを好むなら、あなたはそれらを省略することができます。このディレクティブは、複雑な設定の方が便利です。
- すべてのアプリは同じホスト名から配信されているため、
server
ブロックを共有しますが、それぞれのサブディレクトリに対して別々のlocation
ブロックを持っています。
- これらはすべて同じホスト名を共有するため、この場合はサーバー証明書に複数のSANは必要ありません。
- アプリ1:
https://example.com/app1
- アプリ2:
https://example.com/app2
- アプリ3:
https://example.com/app3
- アプリ4:
https://example.com/app4
- 各バックエンド・アプリケーションは、フロントエンドサーバー上のサブディレクトリから利用できるようになります
いずれかのシナリオでは10 TLSの設定
、あなたが該当する場合、パブリックCA、または内部PKIにより署名されたいずれかで、SSL証明書を設定する必要があります。あなたのアプリが公開される場合は、公開証明書を使用する必要があります。次に、上記のNginx設定にその場所を追加します。
はさらに現実世界の例えば
を読むと、あなたはそれらの元のポートにも関わらず、implements SSLとreverse proxies他のいくつかのサービスを、私はGenieacs TR-069サーバー用に使用していますnginxの設定をチェックアウトすることができます443にはなりません。これは、それらを元のポートに保持したい場合に便利です。
Nginxサイトには、逆プロキシの基本設定でdecent primerもあります。