Après avoir acheté un certificat SSL, j'ai essayé de forcer toutes les pages à sécuriser https et à www.
https://www.exampl.com fonctionne et est sécurisé mais uniquement si vous le saisissez exactement. www.example.com ou example.com pointent toujours vers http.
Nous utilisons nginx comme proxy et devons y entrer la réécriture. J'ai un accès SSH/root via PuTTY. J'ai accédé à nginx.conf en entrant dans PuTTY.
Et maintenant? Dois-je saisir les commandes nginx sur cette page? Commencer où se trouve le curseur? Toutes les lignes de commande en premier?
HTTPS:
. htacess - Le code original m'a été donné avant de découvrir que je devais entrer dans nginx
RewriteEngine On
RewriteCond %{HTTP_Host} ^example.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Convertisseur de code Nginx - Voici comment cela s'affiche sur le convertisseur. Est-ce que tout est sur les bonnes lignes?
# nginx configuration location / {
if ($http_Host ~* "^example.com"){
rewrite ^(.*)$ http://example.com/$1 redirect; } }
puis
[~ # ~] www [~ # ~]
. htacess - Le code original m'a été donné avant de découvrir que je devais entrer dans nginx
#Force www:
RewriteEngine on
RewriteCond %{HTTP_Host} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]
Convertisseur de code Nginx - Voici comment cela apparaît sur le convertisseur. Est-ce que tout est sur la bonne ligne?
# nginx configuration location / {
if ($http_Host ~* "^example.com"){
rewrite ^(.*)$ http://www.example.com/$1 redirect; }
}
Dois-je alors enregistrer? Redémarrer?
Toute aide serait grandement appréciée. Je lutte contre cela depuis des semaines. Ma société d'hébergement a aidé dans la mesure du possible, maintenant j'apprends à la volée…. Ou devrais-je simplement arrêter et embaucher un développeur? $$$
Merci
La meilleure façon d'implémenter la redirection WWW et HTTPS est de créer une nouvelle section server
dans la configuration Nginx:
server {
listen 80; #listen for all the HTTP requests
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
Vous devrez également effectuer https://example.com à https://www.example.com redirection. Cela peut être fait avec un code similaire au suivant:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate ssl.crt; #you have to put here...
ssl_certificate_key ssl.key; # ...paths to your certificate files
return 301 https://www.example.com$request_uri;
}
Et bien sûr, vous devez recharger la configuration Nginx après chaque modification. Voici quelques commandes utiles:
vérifier les erreurs de configuration:
Sudo service nginx configtest
recharger la configuration (cela suffirait pour que les changements "fonctionnent"):
Sudo service nginx reload
redémarrez l'ensemble du serveur Web:
Sudo service nginx restart
Toutes vos sections server
doivent se trouver dans la section http
(ou dans un fichier inclus dans la section http
):
http {
# some directives ...
server {
# ...
}
server {
# ...
}
# ...
}
La solution suivante semble être claire et simple, tout est défini dans un bloc serveur. Donc, avec cette configuration, je force tout à https: //www.domain.tld , donc les deux gestionnaires sont ici non-HTTPS et non-WWW sur HTTPS . Il y a deux IF mais si vous ne voulez pas dupliquer le bloc SSL entier deux fois pour le gérer ... c'est la façon de le faire.
server {
listen 80;
listen 443 ssl;
server_name domain.tld www.domain.tld;
# global HTTP handler
if ($scheme = http) {
return 301 https://www.domain.tld$request_uri;
}
# global non-WWW HTTPS handler
if ($http_Host = domain.tld){
return 303 https://www.domain.tld$request_uri;
}
}
Et encore meilleure solution pour éviter les IF:
# Redirect all traffic from HTTP to HTTPS
server {
listen 80;
server_name example.com www.example.com;
# Destination redirect base URI
set $RURI https://www.example.com;
location / {return 301 $RURI$request_uri;}
}
# Redirect non-WWW HTTPS traffic to WWW HTTPS
server {
listen 443 ssl;
# NOTE: SSL configuration is defined elsewhere
server_name example.com;
return 301 $scheme://www.$Host$request_uri;
}
# MAIN SERVER BLOCK
server {
listen 443 ssl;
# NOTE: SSL configuration is defined elsewhere
server_name www.example.com;
}
Si vous disposez d'un répertoire activé pour les sites, n'utilisez pas la directive supérieure "http". Créez simplement un autre fichier (avec n'importe quel nom) dans le répertoire activé par le site qui a:
server {
listen 80; #listen for all the HTTP requests
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
et commenter la ligne
listen 80;
où le nom_serveur est le même dans l'autre fichier qui sert www.example.com