Configuration de HTTPS sur Nginx avec des certificats SSL

Pour activer HTTPS sur Nginx, commencez par obtenir un certificat SSL auprès d'une autorité de certification. Téléchargez ensuite les fichiers nécessaires, qui incluent généralement un fichier de certificat (.pem ou .crt) et une clé privée (.key).

Créez un répertoire dédié, par exemple /etc/nginx/ssl, et placez-y les fichiers de certificat. Assurez-vous que les permissions sont appropriées pour des raisons de sécurité.

Modifiez le fichier de configuration principal de Nginx, souvent situé dans /etc/nginx/nginx.conf ou un fichier spécifique dans /etc/nginx/conf.d/. Voici un exemple de configuration SSL adaptée :


worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;
events {
    worker_connections 1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream app_servers {
        server 10.0.0.1:8080 weight=3 max_fails=3 fail_timeout=30s;
        server 10.0.0.2:8080;
    }

    upstream admin_servers {
        server 10.0.0.3:8080;
    }

    server {
        listen 443 ssl;
        server_name exemple.com;

        ssl_certificate     /etc/nginx/ssl/domain_cert.pem;
        ssl_certificate_key /etc/nginx/ssl/domain_key.key;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass http://app_servers;
            proxy_next_upstream error timeout http_502;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_redirect off;
        }

        location /admin/ {
            proxy_pass http://admin_servers;
            proxy_set_header X-Forwarded-Proto https;
            proxy_buffering off;
        }

        location /app1/ {
            proxy_pass http://10.0.0.4:9090;
            proxy_set_header X-Forwarded-Proto https;
        }
    }
}

Pour garantir que les applications backend gèrent correctement les en-têtes proxy, configurez Tomcat en ajoutant la valve suivante dans le fichier server.xml :


<Valve className="org.apache.catalina.valves.RemoteIpValve"
       remoteIpHeader="X-Forwarded-For"
       protocolHeader="X-Forwarded-Proto"
       protocolHeaderHttpsValue="https" />

Redémarrez Nginx pour appliquer les modifications avec la commande :


sudo systemctl restart nginx

Vérifiez la configuration en accédant à votre domaine via HTTPS. Pour forcer la redirection du trafic HTTP vers HTTPS, ajoutez un bloc serveur supplémentaire :


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

Étiquettes: nginx ssl HTTPS certificats reverse-proxy

Publié le 13 juin à 23h51