Si vous avez plusieurs domaines et que vous cherchez une solution plus approche générique sans perdre de performance et sans lister tous les domaines tout le temps, vérifiez ceci.
Comment cela fonctionne-t-il ?
- écouter sur 80 et rediriger tous les http vers https - y compris
http://www.
qui ira à https://www.
- écouter 433, mais seulement sur
www
et rediriger vers des noms de serveurs non www
en utilisant une expression régulière
- écoutez 433 pour chacun de vos non
www
nom du serveur - c'est là que tout le trafic aboutira
Est-il rapide ?
Oui ! Même si nous utilisons RegExp, c'est seulement dans la section www
-versions qui renvoie 301. Ainsi, tout le trafic normal sera traité sans coût de traitement supplémentaire.
# Redirect everything to HTTPS (including "www")
server {
listen 80 default_server;
listen [::]:80 default_server;
return 301 https://$host$request_uri;
}
# Redirect away from "www" versions:
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name www.example-1.com
www.example-2.com
www.example-3.com;
# using generic "www" removal // https://stackoverflow.com/questions/11323735/nginx-remove-www-and-respond-to-both/45676731#45676731
if ( $host ~ ^www\.(.+)$ ) {
set $without_www $1;
rewrite ^ $scheme://$without_www$uri permanent;
}
# SSL settings:
ssl_certificate /etc/letsencrypt/live/example/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example/privkey.pem; # managed by Certbot
}
# And finally one "server" block for each of your domains
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name example-1.com;
# SSL settings, etc...
}
server {
server_name example-2.com;
# ... listen, ssl, etc...
}
server {
server_name example-3.com;
# ... etc
}
PS : si vous avez besoin d'aide pour la configuration de SSL, vérifiez Générateur de configuration SSL de Mozilla :
https://ssl-config.mozilla.org/