Corriger l'erreur "421 Misdirected Request" avec Apache et un proxy Nginx suite à une mise à jour

Ce matin, grosse surprise en vérifiant quelques sites : ceux d'un serveur plantent tous avec l'erreur 421 "Misdirected Request".

Petit tour dans les logs et on trouve des "AH02032: Hostname XXXXX (default host as no SNI was provided) and hostname YYYYY provided via HTTP have no compatible SSL setup".

SNI c'est pour Server Name Indication.

La distribution utilisée sur ces machines est une Debian. Nous passons par MyVesta en guise de panel d'administration. Après quelques recherches il semble que ce soit généralisé suite à une mise à jour d'Apache utilisé avec un proxy Nginx qui ne lui passerait pas le nom de l'hôte à afficher ce qui ne permettrait pas de déterminer quel certificat SSL utiliser.

La solution est venue d'un article de Julien Macé qui est y a eu droit en juillet sur un serveur Plesk.

En attendant un changement de configuration par défaut du côté de MyVesta ou Nginx vous pouvez résoudre le problème en ajoutant les lignes suivantes dans le fichier /etc/nginx/nginx.conf

proxy_ssl_server_name on;
proxy_ssl_name $host;

Ensuite redémarrer simplement Nginx.

sudo service nginx restart