Cela doit être un duplicata, mais j'ai cherché longtemps et je n'ai rien trouvé.
Quand je saisis l'adresse de mon site web en utilisant http, j'obtiens la page par défaut de NginX (https fonctionne bien):
http://svija.love
Le fichier de configuration NginX contient, à la fin:
server {
if ($host = svija.love) {
return 301 https://$host$request_uri;
} # géré par Certbot
server_name svija.love;
listen 80;
return 404; # géré par Certbot
}
Ceci a été ajouté automatiquement par Certbot.
Je m'attendrais à ce que la déclaration if ($host = svija.love) capture la requête http et redirige vers HTTPS.
Mais cela ne fonctionne pas de cette manière.
Ne étant pas expert, il me semble que la deuxième partie, commençant par server_name svija.love, est en contradiction directe avec la première partie:
- le premier bloc redirige si l'hôte est svija.love
- le deuxième bloc renvoie 404 si l'hôte est svija.love
Le nom de serveur réel configuré est live.svija.love, si cela fait une différence.
Toute clarification serait grandement appréciée.
[MISE À JOUR] J'ai supprimé le fichier de configuration par défaut de NginX et maintenant HTTP redirige vers HTTPS comme prévu.
Cependant, si quelqu'un peut expliquer les deux blocs de configuration ci-dessus, j'aimerais mieux comprendre ce qu'ils font.
[MISE À JOUR] Ce n'était pas une bonne solution (voir ci-dessous).
[MISE À JOUR] Voici la configuration donnée par nginx -T:
# fichier de configuration /etc/nginx/nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Paramètres de base
##
sendfile off;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Paramètres SSL
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Suppression de SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Paramètres de journalisation
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Paramètres de Gzip
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Configurations d'hôte virtuel
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
# fichier de configuration /etc/nginx/modules-enabled/50-mod-http-image-filter.conf:
load_module modules/ngx_http_image_filter_module.so;
# fichier de configuration /etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf:
load_module modules/ngx_http_xslt_filter_module.so;
# fichier de configuration /etc/nginx/modules-enabled/50-mod-mail.conf:
load_module modules/ngx_mail_module.so;
# fichier de configuration /etc/nginx/modules-enabled/50-mod-stream.conf:
load_module modules/ngx_stream_module.so;
# fichier de configuration /etc/nginx/mime.types:
server {
# doit correspondre au nom de domaine ou à l'adresse IP
# sinon la page par défaut de Nginx sera affichée
server_name antretoise.svija.site;
# répertoire des éléments statiques du site
location /static/ {
root /home/antretoise;
}
access_log /opt/logs/access.antretoise;
error_log /opt/logs/error.antretoise error;
# transmettre toutes les requêtes supplémentaires à notre application
location / {
# paramètres de /etc/nginx/uwsgi_params
include uwsgi_params;
# transmettre le trafic au socket
# que le serveur uWSGI met en place
# LES SOCKETS DOIVENT CORRESPONDRE DANS:
# /etc/uwsgi/sites/antretoise.ini
uwsgi_pass unix:/run/uwsgi/antretoise.sock;
}
listen 443 ssl; # géré par Certbot
ssl_certificate /etc/letsencrypt/live/antretoise.svija.site/fullchain.pem; # géré par Certbot
ssl_certificate_key /etc/letsencrypt/live/antretoise.svija.site/privkey.pem; # géré par Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # géré par Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # géré par Certbot
}
server {
if ($host = antretoise.svija.site) {
return 301 https://$host$request_uri;
} # géré par Certbot
listen 80;
server_name antretoise.svija.site;
return 404; # géré par Certbot
}
# fichier de configuration /etc/nginx/uwsgi_params:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
ssl_session_cache shared:le_nginx_SSL:10m;
ssl_session_timeout 1440m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers "EC-AES128-SHA";
#———————————————————————————————————————— par défaut
server {
listen 80 server par défaut;
listen [::]:80 server par défaut;
root /var/www/html;
# Ajouter index.php à la liste si vous utilisez PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# Première tentative de servir la requête en tant que fichier, puis
# en tant que répertoire, puis recourir à l'affichage d'une erreur 404.
try_files $uri $uri/ =404;
}
}
#———————————————————————————————————————— svija.love
server {
server_name svija.love;
# répertoire des éléments statiques du site
location /static/ {
root /home/svijalove;
}
access_log /opt/logs/access.svijalove;
error_log /opt/logs/error.svijalove error;
# transmettre toutes les requêtes supplémentaires à notre application
location / {
# paramètres de /etc/nginx/uwsgi_params
include uwsgi_params;
# transmettre le trafic au socket
# que le serveur uWSGI met en place
# LES SOCKETS DOIVENT CORRESPONDRE DANS:
# /etc/uwsgi/sites/svijalove.ini
uwsgi_pass unix:/run/uwsgi/svijalove.sock;
}
listen 443 ssl; # géré par Certbot
ssl_certificate /etc/letsencrypt/live/svija.love/fullchain.pem; # géré par Certbot
ssl_certificate_key /etc/letsencrypt/live/svija.love/privkey.pem; # géré par Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # géré par Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # géré par Certbot
}
server {
if ($host = svija.love) {
return 301 https://$host$request_uri;
} # géré par Certbot
server_name svija.love;
listen 80;
return 404; # géré par Certbot
}
# 6 autres sites à la fin, tous configurés de la même manière
# sauf que dans les deux dernières lignes,
# listen 80; est parfois listé AVANT return 404;