Configurations Nginx
Tester le fichier de configuration NGINX
Vous pouvez vérifier les erreurs de syntaxe et les fichiers référencés dans un fichier de configuration NGINX avant de l’exécuter avec :
nginx -t
Vous pouvez également exécuter le script de service
service nginx configtest
Alors que ces deux commandes vous diront si votre nouvelle configuration nginx est correcte [sans tuer votre instance actuelle]. Configtest utilise le service en cours d’exécution et vous indique s’il réussit ou échoue à la vérification, tandis que nginx -t vérifiera non seulement la configuration, mais imprimera toutes les informations, les avertissements ainsi que les messages d’erreur.
Source : http://devget.net/nginxapache/nginx-configtest-vs-nginx-t/
changements de configuration sans redémarrage
nginx -s recharger
Structure du fichier de configuration
nginx se compose de modules qui sont contrôlés par des directives spécifiées dans le fichier de configuration.
Directives simples
Une directive simple se compose du nom et des paramètres séparés par des espaces et se termine par un point-virgule (;).
Directive de bloc
Une directive de bloc a la même structure qu’une simple directive, mais au lieu du point-virgule, elle se termine par un ensemble d’instructions supplémentaires entourées d’accolades ({ et }).
Le contexte
Si une directive de bloc peut avoir d’autres directives entre accolades, elle est appelée un contexte (exemples : événements, http, serveur et emplacement).
Les directives placées dans le fichier de configuration en dehors de tout contexte sont considérées comme étant dans le contexte principal. Les événements et les directives http résident dans le contexte principal, le serveur dans http et l’emplacement dans le serveur.
Commentaire
Le reste d’une ligne après le signe # est considéré comme un commentaire.
Spécifiez le fichier de configuration à charger
nginx -c <file name>
Démarrez NGINX avec un fichier de configuration explicite.
Connexion à Syslog, incl. mappage des codes HTTP aux gravités Syslog.
Collez cet extrait quelque part dans le bloc http {}
; ou placez-le dans son propre fichier dans le dossier /etc/nginx/conf.d/
. Voir également les [documents officiels] [1] pour se connecter à syslog.
#
# Access Log
#
log_format fmt_syslog '[$time_local] $status $remote_addr $http_host "$request" $body_bytes_sent $request_time "$http_user_agent" $remote_user';
map $status $log_is_error { "~^5\d\d" 1; default 0; }
map $status $log_is_warn { "~^4[0-8]{2}" 1; default 0; }
map $status $log_is_info { "~^[1-3]\d\d" 1; default 0; }
access_log syslog:server=unix:/run/systemd/journal/syslog,nohostname,facility=local2,severity=error fmt_syslog if=$log_is_error;
access_log syslog:server=unix:/run/systemd/journal/syslog,nohostname,facility=local2,severity=warn fmt_syslog if=$log_is_warn;
access_log syslog:server=unix:/run/systemd/journal/syslog,nohostname,facility=local2,severity=info fmt_syslog if=$log_is_info;
#
# Error Log
#
error_log syslog:server=unix:/run/systemd/journal/syslog,nohostname,facility=local2 error;
Cet exemple suppose que rsyslog (ou similaire) écoute sur Socket /run/systemd/journal/syslog
- comme c’est le cas par défaut sur Debian 8 lorsque journald a activé [ForwardToSyslog][2]. En utilisant ce socket, vous contournez journald. Si ce socket n’est pas disponible, essayez /dev/log
à la place.
N’hésitez pas à utiliser une autre installation au lieu de local2. Vous pouvez également modifier le [log_format][3] en fonction de vos besoins.
[1] : http://nginx.org/en/docs/syslog.html [2] : https://www.freedesktop.org/software/systemd/man/journald.conf.html [3] : http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format
Limiter les méthodes de requête
Un site Web habituel n’a besoin que de 3 méthodes HTTP : GET
, HEAD
et POST
. Bloquez toutes les autres méthodes en utilisant [limit_except][1] :
location / {
[...]
# Note: GET includes HEAD
limit_except GET POST {
deny all;
}
[...]
}
[1] : http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except