Comment configurer Nginx pour HTTP et HTTPS ?

Publié 13 octobre 2024

Problème : Configuration de Nginx pour HTTP et HTTPS

La mise en place de Nginx pour gérer le trafic HTTP et HTTPS peut être complexe. Il faut configurer le serveur pour écouter sur différents ports et gérer les certificats SSL/TLS, tout en mettant en place une redirection correcte entre les protocoles.

Solution : Modification du bloc serveur Nginx pour la prise en charge des deux protocoles

Ajustement du fichier de configuration Nginx

Pour permettre à Nginx de gérer le trafic HTTP et HTTPS, vous devez modifier la configuration de votre bloc serveur. Les principaux changements concernent :

  • La suppression de la directive 'ssl on' : Cette directive force SSL pour toutes les connexions, ce qui peut causer des problèmes avec les requêtes HTTP.
  • La mise en place de directives 'listen' séparées pour HTTP et HTTPS : Cela permet au serveur d'accepter des connexions sur les ports 80 (HTTP) et 443 (HTTPS).

Exemple d'un bloc serveur corrigé

Voici un exemple de bloc serveur qui prend en charge HTTP et HTTPS :

server {
    listen 80;
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /chemin/vers/votre/certificat_ssl.crt;
    ssl_certificate_key /chemin/vers/votre/cle_certificat_ssl.key;

    # Autres paramètres SSL...

    root /var/www/votre_site_web;
    index index.html;

    # Autres configurations du serveur...
}

Dans cette configuration :

  • La directive 'ssl on' est supprimée.
  • Deux directives 'listen' sont utilisées : une pour le port 80 (HTTP) et une pour le port 443 (HTTPS).
  • Le paramètre 'ssl' est ajouté à la directive listen 443, activant SSL uniquement pour les connexions HTTPS.
  • Les chemins des certificats SSL sont spécifiés à l'aide des directives ssl_certificate et ssl_certificate_key.

Ces modifications permettent au serveur de gérer correctement les requêtes HTTP et HTTPS, résolvant ainsi l'erreur 400 pour les requêtes HTTP.

Conseil: Testez votre configuration

Après avoir apporté des modifications à votre configuration Nginx, testez-la toujours avant de redémarrer le serveur. Utilisez la commande nginx -t pour vérifier les erreurs de syntaxe et les problèmes potentiels. Cela aide à prévenir les erreurs de configuration qui pourraient entraîner une interruption du service.