Nginx: redirection de http vers https (erreur: trop de redirections)
Exécution de Nginx et tentative de redirection:
www à non-www
http à https
Je me rends compte qu'il existe des fils similaires, mais aucun avec le même scénario.
J'ai installé Webmin / Virtualmin et Fast-CGI. J'ai de nombreux comptes / sites sur ce serveur. Pour mysite, c'est le bloc serveur:
server {
listen my_server_IP;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
root /home/example/public_html;
index index.html index.htm index.php;
access_log /var/log/virtualmin/example.com_access_log;
error_log /var/log/virtualmin/example.com_error_log;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME /home/example/public_html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT /home/example/public_html;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/php-nginx/148180748420424.sock/socket;
}
# htaccess
location / {
try_files $uri $uri/ /index.php?$args;
}
#
listen my_server_IP:443 ssl;
ssl_certificate /home/example/ssl.cert;
ssl_certificate_key /home/example/ssl.key;
}
Maintenant, la configuration telle qu'elle apparaît maintenant, n'est pas de moi, à part le bit #htaccess (converti à partir du .htaccess d'Apache pour activer les "jolis liens" dans Wordpress) et la ligne "return 301".
Le certificat SSL provient de LetsEncrypt, si cela fait une différence.
J'ai enregistré et redémarré Nginx.
Lors de la demande du site dans Chrome, il me dit "ERR_TOO_MANY_REDIRECTS"
Qu'est-ce que je fais mal? Dois-je ajouter ou supprimer quelque chose?
Réponses
Ceci est une version simplifiée de votre configuration actuelle (moins tous les bits qui ne font actuellement rien en termes de contenu) avec quelques notes ajoutées afin que vous puissiez voir ce qui se passe. Les deux dernières lignes ne cessent de renvoyer les choses au début. D'où une erreur de nombreuses redirections.
server {
listen my_server_IP; #listen on IP x.x.x.x
listen my_server_IP:443 ssl; #listen on IP x.x.x.x on 443
server_name example.com www.example.com; #Of the requests on IP x.x.x.x look for those with with one of these headers. send to line below
return 301 https://example.com$request_uri; #Send everything to the line above
}
C'est ce dont vous avez besoin, vous pouvez utiliser une ifdéclaration, mais ne laissez pas cette fois-ci, juste pour que vous puissiez voir clairement ce qui se passe. Ses plus de lignes mais cela fonctionnera.
server {
listen my_server_IP;
server_name example.com www.example.com; #Listen for non-https requests
return 301 https://example.com$request_uri; #Send to the correct https address
}
server {
listen my_server_IP:443 ssl;
server_name www.example.com; #Listen for https (www) requests
return 301 https://example.com$request_uri; #Send to the correct https
ssl_certificate /home/example/ssl.cert;
ssl_certificate_key /home/example/ssl.key;
}
server {
listen my_server_IP:443 ssl;
server_name example.com;
ssl_certificate /home/example/ssl.cert;
ssl_certificate_key /home/example/ssl.key;
<Rest of your config from above, fastcgi etc>
}