Nginx – Rediriger les requêtes en HTTP vers HTTPSSi
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 [Vous devez être inscrit et connecté pour voir ce lien]
## Redirige le HTTP vers le HTTPS ##
return 301 [Vous devez être inscrit et connecté pour voir ce lien]
}
## 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 [Vous devez être inscrit et connecté pour voir ce lien]
fastcgi_param HTTPS on;
## Redirection de l url avec www vers une url sans www
if ($host = '[Vous devez être inscrit et connecté pour voir ce lien] ) {
rewrite ^/(.*)$ [Vous devez être inscrit et connecté pour voir ce lien] 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 [Vous devez être inscrit et connecté pour voir ce lien]
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 nginxnginx -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 !SourceSource : Korben