web-dev-qa-db-fra.com

Comment puis-je m'assurer que je redirige les demandes HTTP vers HTTPS?

J'utilise CloudFlare pour DNS pour une variété de sites. J'utilise les trois règles de page gratuites pour la mise en cache personnalisée et j'essaie d'éviter de mettre à niveau leur service Pro pour utiliser des règles de page afin de forcer HTTPS. J'ai configuré HSTS et l'ai soumis au préchargement. Toutes les connexions du port 80 de mon serveur sont également redirigées vers une connexion TLS. Cependant, lorsque de nouveaux navigateurs tentent d'abord d'accéder à mes sites via HTTP, ils ne sont pas redirigés, mais une erreur CloudFlare 522 s'affiche (la connexion au serveur Origin a expiré). Des idées sur la façon dont je peux résoudre ce problème?

Voici ma configuration Nginx (j'ai omis la plupart des blocages du serveur 443 pour des raisons de sécurité, mais l'accès au site via HTTPS fonctionne):

server {
    server_name www.filterlists.com;
    rewrite ^/(.*)$ https://filterlists.com/$1 permanent;
}

server {
    listen 80;
    server_name filterlists.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name filterlists.com;
    root /var/www/filterlists;
2
Collin Barrett

Il manque une directive d'écoute dans votre premier bloc de serveur, mais nous pouvons simplifier les choses et les rendre plus performantes en combinant les deux domaines nom_serveur en un seul pour les demandes du port 80 et en utilisant une redirection au lieu d'une réécriture.

server {
    # HTTP --> HTTPS
    listen 80;
    listen [::]:80;
    server_name www.EXAMPLE.com EXAMPLE.com;
    return 301 https://EXAMPLE.com$request_uri;
}

server {
    # remove 'www' subdomain
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name www.EXAMPLE.com;
    ssl_certificate /PATH/TO/CERTIFICATE.crt;
    ssl_certificate_key /PATH/TO/KEY.key;
    return 301 https://EXAMPLE.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name EXAMPLE.com;
    root /YOUR/SITE/DIRECTORY;

    ...

}

Pour cela et de nombreux autres exemples de configuration Nginx, j'utilise les modèles de H5BP , qui couvrent la plupart des tâches que vous voudriez faire.

1
Tom Brossman