Comment configurer le fichier de conf Nginx pour forcer SSL sur un seul des chemins de mon site et non SSL sur tous les autres?
Par exemple, je veux que toutes les URL sous / user soient https mais que toutes les autres URL soient http.
Pour la première partie, j'ai:
rewrite ^/user(.*) https://$http_host$request_uri?;
Je ne veux pas utiliser "si". Je suppose que cela profiterait de l'ordre de fonctionnement, mais je ne veux pas finir dans une boucle.
/user
et non-ssl pour toutes les autres URL. Par conséquent, même l'utilisateur tape explicitementhttps://www.example.com/
dans la barre d'adresse du navigateur, la page résultante esthttp://www.example.com/
. Existe-t-il un moyen d'implémenter la réécriture auto-url entre ssl / non-ssl comme atteint par les paramètres décrits dans cette réponse, mais toujours respecter la demande ssl explicite si elle est explicitement tapée par l'utilisateur dans la barre d'adresse? Merci!Nginx permet de traiter à la fois HTTP et HTTPS dans le même
server
bloc. Ainsi, vous n'avez pas à dupliquer les directives pour les deux et pouvez rediriger le chemin que vous souhaitez sécuriserAssurez-vous de ne pas y mettre de
ssl on
ligne car cela cassera le HTTP simple.Facultativement, vous pouvez rediriger toutes les autres demandes de HTTPS vers HTTP de la même manière:
MISE À JOUR : comme le souligne gentiment Alexey Ten dans la section des commentaires, vérifier
scheme
chaque demande n'est pas une idée très brillante. Vous devez suivre la manière déclarative de configurer votre nginx. Dans ce cas, déclarez deux blocs serveur avec des redirections parlocation
, déplacez la logique commune vers un fichier séparé etinclude
dans les deux. La réponse de GruffTech est donc meilleure.la source
include
directive pour les directives communes. Une certaine duplication est OK.