J'utilise le package nginx par défaut sur le serveur Ubuntu 14.04. Il utilise /etc/nginx/nginx.conf
comme configuration principale, puis inclut les configurations depuis /etc/nginx/conf.d/*.conf
et /etc/nginx/sites-enabled/*
.
La configuration par défaut de nginx a cette directive pour se connecter au journal d'accès
access_log /var/log/nginx/access.log;
Je voudrais ajouter l'en-tête X-Forwarded-For, donc je fais cela à l'intérieur du conf.d
dossier:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
Le problème que j'ai est que j'obtiens alors deux enregistrements dans mon fichier access.log - un avec les informations d'en-tête et un autre sans.
Je sais que je peux écraser le nginx.conf
fichier lui-même, mais je préfère l'éviter si possible. Je voudrais également continuer à utiliser le même fichier journal ( access.log
).
Existe-t-il un moyen de dire à nginx de remplacer la directive précédente et de simplement changer le format du journal sans modifier le nginx.conf
fichier principal ?
la source
Réponses:
la réponse à votre question est NON, vous ne pouvez pas remplacer un log_format à n'importe quel niveau dans nginx et vous ne pouvez pas remplacer access_log au même niveau, sauf le désactiver. Cependant, vous pouvez réaliser ce que vous vouliez sans changer nginx.conf mais vous devrez le faire au niveau du serveur {}.
Le problème ici est que l'inclusion de conf.d / * est à l'intérieur de http {}, qui est exactement où se trouve la directive access_log. Ce que vous pouvez faire sans toucher nginx.conf, c'est changer le serveur {} que vous utilisez (si vous n'en avez pas configuré un, vous utilisez celui par défaut situé dans / etc / nginx / sites-enabled / default). Donc, pour obtenir le même résultat sans modifier nginx.conf, vous devez modifier votre fichier dans le dossier conf.d en:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log off;
Et puis à l'intérieur de votre serveur {} mettez:
access_log /var/log/nginx/access.log main;
Cela devrait vous donner ce que vous vouliez au début.
la source
main
log_format, de sorte que vous devez choisir un autre nom.