====== 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).