ドメインの 1 つに nginx を設定しました。これは、Wildfly アプリケーション サーバーのフロントエンドとして機能します。ある日、同じマシンでベータ テスト環境を設定することにしました。そこで、別のサブドメインを設定に追加しました。再起動後、nginx は最初のアプリケーションの提供を停止しました。設定ファイルは次のとおりです。
メインサブドメイン:
server {
listen 80;
server_name sub.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name sub.example.com;
ssl_certificate /etc/nginx/ssl/bundle.crt;
ssl_certificate_key /etc/nginx/ssl/sub.example.com.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/sub.example.com.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
}
}
テストサブドメイン:
server {
listen 443;
server_name sub-test.example.com;
return 301 http://$host$request_uri;
}
server {
listen 80;
server_name sub-test.example.com;
access_log /var/log/nginx/sub-test.example.com.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
}
}
上記の各構成は、単独では期待どおりに機能することを付け加えておきます。ただし、組み合わせると互いにうまく機能しません。最初の構成を要求すると、NOT FOUND HTTP ステータスが返されます。
もちろん、問題は私の Wildfly サーバーにあるかもしれません。仮想ホストを処理するように構成されていますが、それが正常かどうかはよくわかりません。ただし、両方のアプリケーションが実行され、そのうちの 1 つだけが nginx によってプロキシされている場合は、正常に動作します。
手伝ってくれてありがとう。
答え1
Patrykさん、残念ながら、名前ベースのHTTPSサーバーを複数設定することはできません。説明は長いですが、ここ詳細な情報と例については(Apacheベース、nginxについてはわかりません)
答え2
複数の https サイトを使用できます。
この技術は SNI (サーバー名表示) と呼ばれます。参照
SSL 部分をサーバー構成から移動することで、証明書を構成するためのオーバーヘッドも削減されます。私はリバース プロキシで次の構造を使用しています。
sites.d/ | -ssl.conf | -vhost1.conf | -vhost2.conf
ssl.conf には次の内容が含まれます。
ssl_certificate /etc/ssl/certs/ssl.crt; ssl_certificate_key /etc/ssl/certs/server.key;
もう 1 つのオプションは、異なる共通名を持つ個別の証明書を使用することです。