Introduction
Une tâche courante consiste à rediriger toute demande HTTP vers HTTPS, de sorte que nos applications et sites utilisent toujours des certificats SSL.
Dans Nginx, nous voulons généralement éviter les instructions if. Comme pour la redirection entre les sous-domaines www et non www, nous utiliserons un bloc serveur pour rediriger les requêtes HTTP vers HTTPS.
Rediriger tout requête HTTP
Une méthode que j'aime faire est de récupérer toutes les demandes du port 80 (http) et de les rediriger vers le port 443 (https).
Cela fonctionne lorsque seulement si tous les sites configurés utilisent uniquement https.
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
La configuration écoute sur le port 80 du serveur par défaut. Le nom serveur est _, qui correspond à tout nom d'hôte utilisé.
Enfin, nous renvoyons une redirection 301 vers la version https de l'URI demandé. Nous savons que toutes les requêtes atteignant ce bloc serveur sont http, car il écoute seulement sur le port 80.
Rediriger des sites spécifiques
Nous pouvons également rediriger uniquement des sites spécifiques. C'est mieux si vous avez plusieurs applications / sites et que tous ne doivent pas être obligés d'utiliser des certificats SSL.
server {
listen 80;
server_name webo3.foo;
return 301 https://$host$request_uri;
}
Ici, nous écoutons sur le port 80 les requêtes http, mais nous n'en faisons pas le serveur par défaut. Au lieu de cela, il écoute uniquement les demandes adressées au nom d'hôte webo3.foo.
Configuration SSL
Nos sites / applications peuvent alors être configurés pour écouter sur le port 443 avec SSL.
server {
listen 443 ssl default_server;
server_name webo3.foo;
}
server {
listen 443 ssl;
server_name webo3.bar;
}
N'importe quel site peut être le serveur par défaut pour le port 443. C'est à vous de définir et cela n'aura probablement pas d'importance dans la pratique.