J'ai un serveur Web avec de nombreux serveurs virtuels. Seul 1 d'entre eux est SSL. Le problème est, car il n'y a pas de bloc serveur catchall à l'écoute de SSL, toute demande https vers les autres sites est servie par le bloc 1 SSL.
Ma configuration ressemble essentiellement à ceci:
# 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;
# ...
}
Maintenant qu'il n'y a pas d'écouteur par défaut pour 443, une requête comme celle- https://server1.com
ci finira par être servie par le server2.com
bloc https. Cela fait suite à la logique server_name
dans la documentation.
S'il n'y a pas de correspondance, un bloc de serveur {...} dans le fichier de configuration sera utilisé selon l'ordre suivant:
- le bloc serveur avec une directive d'écoute correspondante marquée comme [default | default_server]
- le premier bloc serveur avec une directive d'écoute correspondante (ou écoute implicite 80;)
Quelle est la solution préférée pour ce problème? Dois-je configurer un certificat factice pour mon bloc de serveur catch all juste pour pouvoir écouter sur 443 et gérer les mauvaises demandes? Y a-t-il un paramètre que je ne connais pas qui force une correspondance exacte avec le nom d'hôte server
?