====== Comment réaliser une authentification HTTP basique ? ====== auth_basic "Espace restreint"; auth_basic_user_file /path/to/.htpasswd; nginx reprend une partie des formats d'Apache, vous pouvez donc, pour ces formats communs (détaillés ci-dessous), employer l'utilitaire htpasswd fournit avec Apache pour générer vos fichiers de comptes. Méthodes de hashage commune à Apache : * le MD5 modifié d'Apache (option -m de htpasswd, préfixé par $apr1$) * le SHA1 non salé (-s ; déconseillé, préfixé de {SHA}) * la méthode crypt (-d ; indisponible sous Windows, pas de préfixe) Différences avec Apache : * nginx permet du SHA1 salé (préfixé {SSHA}) * nginx supporte les mots de passe en clair (déconseillé) mais ils doivent être préfixés de {PLAIN} * nginx ne prend pas (encore ?) en charge bcrypt ====== Comment rediriger son domaine ... ====== ===== ... sans www => avec ? ===== server { server_name domaine.ext; return 301 $scheme://www.$server_name$request_uri; } ===== ... pour forcer https ===== server { server_name x.y.z; # remplacer $server_name par $host si le même bloc server gère en fait plusieurs VH return 301 https://$server_name$request_uri; } ====== Supprimer un cookie ====== add_header Set-Cookie "NomDuCookieASupprimer=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/"; Les attributs chemin (path), httponly (ajouter ''; httponly'' à fin de la chaîne ci-dessus), domain (''; domain=x.y.z'') et secure (''; secure'') doivent être repris si la valeur ne correspond pas à celle par défaut. ====== Nginx et proxy ====== ===== Comment faire suivre le protocole initial (http vs https) au backend ? ===== Faites suivre l'information en insérant une entête HTTP (appelée X-Forwarded-Proto ici) qui reprend le protocole (http ou https) d'origine de la requête. proxy_set_header X-Forwarded-Proto $scheme; Ainsi, vous devriez la retrouver ensuite : * pour PHP, sous la variable ''$_SERVER['HTTP_X_FORWARDED_PROTO']'' * pour Apache, la variable de réécriture ''%{HTTP:X_FORWARDED_PROTO}'' ===== Comment faire travailler nginx sur l'adresse IP réelle du client et non celle du proxy quand nginx est derrière un mandataire ? ===== Nécessite le module ngx_http_realip_module. set_real_ip_from A.B.C.D; real_ip_header X-Forwarded-For; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; A.B.C.D est à remplacer par la ou les adresses (éventuellement via la notation CIDR) IP "interne" du mandataire en amont (127.0.0.1 s'ils sont tous deux sur le même hôte).