web-dev-qa-db-fra.com

Directive Nginx Access_log - Entrées du journal en double

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?

17
Yoav Aner

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.

6
Valor