Saya memiliki server web dengan banyak server virtual. Hanya 1 yang merupakan SSL. Masalahnya adalah, karena tidak ada blok server catchall yang mendengarkan SSL, setiap permintaan https ke situs lain dilayani oleh 1 blok SSL.
Konfigurasi saya, pada dasarnya, terlihat seperti ini:
# the catch all
server {
listen 80 default;
# I could add this, but since I have no default cert, I cannot enable SSL,
# and this listen ends up doing nothing (apparently).
# listen 443;
server_name _;
# ...
}
# some server
server {
listen 80;
server_name server1.com;
# ...
}
# some other server ...
server {
listen 80;
server_name server2.com;
# ...
}
# ... and it's https equivalent
server {
listen 443;
ssl on;
server_name server2.com;
# ...
}
Sekarang karena tidak ada pendengar default untuk 443, permintaan seperti https://server1.com
akan berakhir dilayani oleh server2.com
blok https. Ini mengikuti logika untuk server_name
dalam dokumen.
Jika tidak ada kecocokan, blok server {...} di file konfigurasi akan digunakan berdasarkan urutan berikut:
- blok server dengan arahan mendengarkan yang cocok ditandai sebagai [default | default_server]
- blok server pertama dengan arahan mendengarkan yang cocok (atau mendengarkan secara implisit 80;)
Apa solusi yang disukai untuk masalah ini? Apakah saya perlu mengatur sertifikat dummy untuk tangkapan saya semua blok server supaya saya bisa mendengarkan 443 dan menangani permintaan yang buruk? Apakah ada parameter yang saya tidak tahu yang memaksa kecocokan hostname yang tepat dengan server
?