Nginx proxy sur https to server – nom d’hôte différent sur cert que dans l’en-tête de l’hôte

Je souhaite recevoir du trafic sur https://example.com , sur le serveur 1. Je souhaite ensuite transférer ce trafic via https vers le serveur 2. Nginx est configuré avec le même certificate et la même clé que le serveur 1 sur le serveur 2. il devrait théoriquement pouvoir servir les demandes. Cependant, lorsque Nginx sur le serveur 2 essaie de faire une demande de proxy au serveur 2, il l’envoie à server2.example.com , qui diffère du nom commun du cert, qui est simplement example.com .

Existe-t-il un moyen de configurer nginx pour qu’il attende que le nom figurant sur le certificate tls proposé par l’hôte (lors de la prise de contact tls) à laquelle il envoie des requêtes diffère de l’adresse de l’hôte auquel il est envoyé?

Exemple de configuration sur le serveur 1:

 server { listen 443 ssl; server_name example.com; ssl_certificatee /srv/tls/example.com.crt; ssl_certificatee_key /srv/tls/example.com.key; location / { proxy_pass https://server2.example.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } 

Exemple de configuration sur le serveur 2:

 server { listen 443 ssl; server_name example.com; ssl_certificatee /srv/tls/example.com.crt; ssl_certificatee_key /srv/tls/example.com.key; location / { proxy_pass http://localhost:12345; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } 

Exemple curl du serveur 1:

 $ curl https://server2.example.com/chat -H "Host: example.com" curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificatee. 

Si besoin est, je pourrais générer un nouveau certificate auto-signé et l’utiliser sur le serveur 2. Cependant, je pensais qu’il serait plus rapide de modifier la configuration de Nginx. Si le changement de configuration n’est pas possible, je créerai un nouveau certificate.

Vous pouvez utiliser la directive proxy_ssl_name pour spécifier le nom du serveur du certificate de l’hôte traité par proxy.

Par exemple:

 location / { proxy_pass https://server2.example.com; proxy_set_header Host $host; proxy_ssl_name $host; ... } 

Voir ce document pour plus de détails.