Aller au contenu
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Nginx – Rediriger les requêtes en HTTP vers HTTPS

Si vous utilisez Nginx en reverse proxy et que vous cherchez la méthode pour rediriger de manière permanente (en 301) tout le trafic arrivant sur le HTTP vers du HTTPS pour apporter confort, sécurité et volupté à vos visiteurs, voici comment faire…

Ouvrez votre nginx.conf (qui se trouve surement dans un répertoire comme /etc/nginx/)

nano nginx.conf

Et faites en sorte d’y placer la ligne de reécriture mise en gras ci-dessous, dans la section réservée à la config HTTP. Les autres sections sont dédiées au HTTPS et à la config SSL.

## le serveur http sur le port 80
server {
      listen      1.2.3.4:80 default;
      server_name example.com www.example.com;
      ## Redirige le HTTP vers le HTTPS ##
      return 301 https://$server_name$request_uri;
}

## Le serveur https sur le port 443. N'oubliez pas vote config SSL###
server {
      access_log  logs/example.com/ssl_access.log main;
      error_log   logs/example.com/ssl_error.log;
      index       index.html;
      root        /usr/local/nginx/html;
      
      ## Début de la config SSL ##
      listen      1.2.3.4:443 ssl;
      server_name example.com www.example.com;
      fastcgi_param HTTPS on;

     ## Redirection de l url avec www vers une url sans www
      if ($host = 'www.example.com' ) {
         rewrite  ^/(.*)$  https://example.com/$1  permanent;
      }

    ### config SSL - A vous de jouer ###
     ssl_certificate      ssl/example.com/example.com_combined.crt;
     ssl_certificate_key  ssl/example.com/example.com.key_without_password;
     ssl_protocols        SSLv3 TLSv1 TLSv1.1 TLSv1.2;
     ssl_ciphers RC4:HIGH:!aNULL:!MD5;
     ssl_prefer_server_ciphers on;
     keepalive_timeout    70;
     ssl_session_cache    shared:SSL:10m;
     ssl_session_timeout  10m;

    ## PROXY
      location / {
        add_header           Front-End-Https    on;
        add_header  Cache-Control "public, must-revalidate";
        add_header Strict-Transport-Security "max-age=2592000; includeSubdomains";
        proxy_pass  http://exampleproxy;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      }
}

Et voilà… Le tour est joué.
Sauvegardez le fichier et relancez nginx

nginx -s reload

Pour vérifier que tout fonctionne correctement, allez faire un tour sur la version HTTP de votre site. Si vous êtes rebasculé automatiquement sur la version en HTTPS et que tout fonctionne, vous avez réussi comme un ninja des bois !

Source


Les articles du moment