web-dev-qa-db-fra.com

Localisez le fichier nginx.conf que mon nginx utilise actuellement.

Travailler sur un serveur client sur lequel deux versions différentes de nginx sont installées. Je pense que l’un d’eux a été installé avec le gestionnaire de paquets brew (c’est une boîte osx) et l’autre semble avoir été compilé et installé avec le Makefile empaqueté nginx. J'ai recherché tous les fichiers nginx.conf sur le serveur, mais aucun de ces fichiers ne définit les paramètres que nginx utilise réellement lorsque je le démarre sur le serveur. Où se trouve le fichier nginx.conf dont je n'ai pas connaissance?

93
b.b.

Exécuter nginx -t via votre ligne de commande va générer un test et ajouter la sortie avec le chemin du fichier au fichier de configuration (avec un message d'erreur ou de succès).

192
Daniel Li
% ps -o args -C nginx
COMMAND
build/sbin/nginx -c ../test.conf

Si nginx a été exécuté sans l'option -c, vous pouvez utiliser l'option -V pour connaître les arguments de configuration définis avec des valeurs non standard. Parmi eux, les plus intéressants pour vous sont:

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname
31
VBart

nginx -t et nginx -V afficheraient tous deux le chemin par défaut du fichier de configuration nginx.

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ nginx -V
nginx version: nginx/1.11.1
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf ...

Si vous le souhaitez, vous pouvez obtenir le fichier de configuration en:

$ nginx -V 2>&1 | grep -o '\-\-conf-path=\(.*conf\)' | cut -d '=' -f2
/etc/nginx/nginx.conf

Même si vous avez chargé un autre fichier de configuration, ils afficheront toujours la valeur par défaut.


ps aux vous montrerait le fichier de configuration nginx actuellement chargé.

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        11  0.0  0.2  31720  2212 ?        Ss   Jul23   0:00 nginx: master process nginx -c /app/nginx.conf

Pour que vous puissiez réellement obtenir le fichier de configuration, par exemple:

$ ps aux | grep "[c]onf" | awk '{print $(NF)}'
/app/nginx.conf
19
Jing Li
which nginx

vous donnera le chemin du nginx utilisé


EDIT (2017-Jan-18)

Merci au commentaire de Will Palmer sur cette réponse, j'ai ajouté ce qui suit ...

Si vous avez installé nginx via un gestionnaire de paquets tel que HomeBrew ...

which nginx

ne peut pas vous donner leEXACTchemin du nginx utilisé. Vous pouvez cependant le trouver en utilisant

realpath $(which nginx)

et comme mentionné par @ Daniel Li

vous pouvez obtenir la configuration de nginx via sa méthode

alternativement, vous pouvez utiliser ceci:

nginx -V
6
Craig Wayne

Outre la réponse de @Daniel Li, l'installation de nginx avec Valet utiliserait également la configuration Velet, qui se trouve dans "/usr/local/etc/nginx/valet/valet.conf". Le fichier nginx.conf aurait importé ce fichier de configuration Valet. Les paramètres dont vous avez besoin sont peut-être dans le fichier Valet. 

1
Olusola Omosola

J'ajouterais simplement, dans mon cas, nginx 1.2.1 sur Debian 7 Wheezy, nginx n'est pas sur PATH, il se trouve sur /usr/sbin/nginx, il fallait donc exécuter /usr/sbin/nginx -t.

Si vous souhaitez utiliser un fichier de configuration autre que celui par défaut (c'est-à-dire pas /etc/nginx/nginx.conf), exécutez-le avec le paramètre -c: /usr/sbin/nginx -c <path-to-configuration> -t.

Vous devrez peut-être aussi l'exécuter en tant que root, sinon nginx pourrait ne pas avoir l'autorisation d'ouvrir, par exemple, les journaux, de sorte que la commande échouerait.

0
Dawid Ferenczy