J'utilise le package NGinx par défaut sur Ubuntu 14.04 Server. Il utilise /etc/nginx/nginx.conf
En tant que configuration principale, puis inclut les configuration de /etc/nginx/conf.d/*.conf
et /etc/nginx/sites-enabled/*
.
La configuration NGinx par défaut a cette directive pour la journalisation du journal d'accès
access_log /var/log/nginx/access.log;
J'aimerais ajouter l'en-tête X-Forwarded, alors je le fais à l'intérieur de la 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, alors je reçois deux enregistrements dans mon fichier Access.log - un avec les informations d'en-tête et une autre sans.
Je sais que je peux écraser le nginx.conf
Dossier lui-même, mais je préfère l'éviter si possible. Je voudrais aussi continuer à utiliser le même fichier journal (access.log
).
Y a-t-il un moyen de dire à Nginx de remplacer la directive précédente et de modifier simplement le format de journal sans modifier la principale nginx.conf
déposer?
la réponse à votre question est non, vous ne pouvez pas remplacer un log_format à n'importe quel niveau de Nginx et vous ne pouvez pas remplacer access_log lorsque vous êtes au même niveau, à l'exception de la mise hors tension. Cependant, vous pouvez réaliser ce que vous vouliez sans changer Nginx.conf, mais vous devrez le faire au niveau serveur {}.
Le problème ici est que l'inclusion de Conf.d/* est à l'intérieur du HTTP {}, qui est exactement où la directive Access_Log est. Ce que vous pouvez faire sans toucher nginx.conf est de changer tout ce que vous utilisez {} que vous utilisez (si vous n'avez pas été configuré, vous utilisez l'une par défaut située sur/etc/nginx/Sites activé/par défaut). Donc, pour obtenir la même chose sans changer Nginx.conf, vous devez modifier votre fichier dans le dossier Conf.D sur: 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 ensuite à l'intérieur de votre serveur {} mettre: access_log /var/log/nginx/access.log main;
Cela devrait vous procurer ce que vous vouliez au début.