Birçok sanal sunuculu bir web sunucum var. Bunlardan yalnızca 1 tanesi SSL'dir. Sorun, SSL'yi dinleyen bir catchall sunucu bloğu olmadığından, diğer sitelere yönelik herhangi bir https isteği 1 SSL bloğu tarafından sunulur.
Konfigürasyonum aslında şöyle görünüyor:
# 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;
# ...
}
Şimdi 443 için varsayılan bir dinleyici olmadığından https://server1.com
, server2.com
https bloğu tarafından sunulan bir istek sonuçlanacak . Bu mantığını izler server_name
de docs.
Eşleşme yoksa, yapılandırma dosyasındaki bir sunucu {...} bloğu aşağıdaki sıraya göre kullanılır:
- [varsayılan | default_server] olarak işaretlenmiş eşleşen dinleme yönergesine sahip sunucu bloğu
- eşleşen bir dinleme yönergesine sahip ilk sunucu bloğu (veya üstü kapalı dinleme 80;)
Bu sorun için tercih edilen çözüm nedir? 443'ü dinleyebilmem ve kötü istekleri işleyebilmem için tüm sunucu bloğumu yakalama için kukla sertifika ayarlamam gerekiyor mu? Farkında olmadığım bir ana bilgisayar adı eşleşmesine zorlayan bir parametre var mı server
?