Saya memiliki subdomain nginx dan berbeda:
a.mydomain.com
b.mydomain.com
c.mydomain.com
Nginx memiliki 4 aturan:
1) aturan penulisan ulang:
server {
listen 80
server_name gl.udesk.org;
root /nowhere;
rewrite ^ https://a.mydomain.com$request_uri permanent;
}
2) aturan 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) aturan default http:
server {
listen 80 default_server;
return 444;
}
4) https aturan default:
server {
listen 443 default_server;
return 444;
}
Jadi jika saya mulai nginx dan:
- jika saya masuk ke browser ke http://a.mydomain.com, itu dialihkan ke https://a.mydomain.com dan kemudian mengembalikan Galat 107 (bersih :: ERR_SSL_PROTOCOL_ERROR): Kesalahan protokol SSL.
- jika saya masuk ke peramban ke https://b.mydomain.com, saya berharap akan mengembalikan Galat 444 kembali. Tetapi sebaliknya ia mengembalikan Kesalahan 107 yang sama (net :: ERR_SSL_PROTOCOL_ERROR): Kesalahan protokol SSL.
- dan untuk semua yang terdaftar oleh penyedia DNS CNAMEs (yaitu a, b, c)
- semua versi http (mis. aturan 3 -) berfungsi seperti yang diharapkan:
- http://a.mydomain.com redirect ke https: // versi,
- http://b.mydomain.com dan http://c.mydomain.com mengembalikan Galat 444 kembali sebagai terkonfigurasi.
Jadi mengapa aturan https di nginx sangat rumit untuk dikonfigurasikan dan bagaimana cara mengkonfigurasinya dengan benar untuk mendapatkan perilaku yang sama dengan versi http?
Memperbarui:
Membuat sertifikat baru dan menambahkan:
ssl on;
ssl_certificate conf.d/ssl/default.crt;
ssl_certificate_key conf.d/ssl/default.key;
berfungsi sekarang, tetapi saya akan memiliki solusi tanpa memerlukan sertifikat SSL. Setel ulang semua koneksi untuk semua subdomain https (port 443) kecuali https://a.mydomain.com tanpa memberikan sertifikat.
nginx
tidak cukup pintar untuk menyadari bahwa itu tidak memerlukan sertifikat untuk apa yang ingin dilakukan pengguna.