nginxとさまざまなサブドメインがあります。
a.mydomain.com
b.mydomain.com
c.mydomain.com
Nginxには4つのルールがあります。
1)書き換えルール:
server {
listen 80
server_name gl.udesk.org;
root /nowhere;
rewrite ^ https://a.mydomain.com$request_uri permanent;
}
2)httpsルール:
server {
listen 443;
server_name a.mydomain.com;
root /home/a/a/public;
ssl on;
ssl_certificate conf.d/ssl/a.crt;
ssl_certificate_key conf.d/ssl/a.key;
ssl_protocols ...
ssl_ciphers ...
ssl_prefer_server_ciphers on;
location ...
}
3)httpデフォルトルール:
server {
listen 80 default_server;
return 444;
}
4)httpsデフォルトルール:
server {
listen 443 default_server;
return 444;
}
だから私がnginxを起動して:
- ブラウザでhttp://a.mydomain.comにアクセスすると、https://a.mydomain.com にリダイレクトされ 、エラー107(net :: ERR_SSL_PROTOCOL_ERROR):SSLプロトコルエラーが返されます。
- ブラウザでhttps://b.mydomain.comにアクセスすると、エラー444が返されるはずです。しかし、代わりに同じエラー107(net :: ERR_SSL_PROTOCOL_ERROR):SSLプロトコルエラーを返します。
- DNSプロバイダーCNAMEによって登録されたすべて(つまり、a、b、c)
- 期待どおりに機能しているすべてのhttpバージョン(例:ルール3-):
- http://a.mydomain.comはhttps://バージョンにリダイレクトし、
- http://b.mydomain.comおよびhttp://c.mydomain.comは、構成どおりにエラー444を返します。
では、nginxのhttpsルールを構成するのが難しいのはなぜですか。また、httpバージョンと同じ動作を得るには、httpsルールを適切に構成する方法を教えてください。
更新:
新しい証明書の作成と追加:
ssl on;
ssl_certificate conf.d/ssl/default.crt;
ssl_certificate_key conf.d/ssl/default.key;
現在は機能しますが、SSL証明書が不要な解決策があります。証明書を提供せずに、https: //a.mydomain.comを除くすべてのhttps(ポート443)サブドメインのすべての接続をリセットするだけです。
nginx
ユーザーがやりたいことのための証明書が必要ないことを理解するのに十分スマートではありません。