Localisez le fichier nginx.conf que mon nginx utilise réellement

131

Travailler sur le serveur d'un client où 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 emballé par 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ù est le fichier nginx.conf que je ne connais pas?

RVB
la source

Réponses:

247

L'exécution nginx -tde votre ligne de commande émettra un test et ajoutera la sortie avec le chemin du fichier au fichier de configuration (avec un message d'erreur ou de réussite).

Daniel Li
la source
34

Les deux nginx -tet nginx -Vimprimeraient le chemin du fichier de configuration par défaut de 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 par:

$ 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 obtenir le fichier de configuration par exemple:

$ ps aux | grep "[c]onf" | awk '{print $(NF)}'
/app/nginx.conf
Jing Li
la source
33
% ps -o args -C nginx
COMMAND
build/sbin/nginx -c ../test.conf

Si nginx a été exécuté sans l' -coption, vous pouvez utiliser l' -Voption pour trouver les arguments de configuration définis sur 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
VBart
la source
1
J'ai essayé d'exécuter les commandes mais elles n'ont pas fonctionné pour moi. La deuxième réponse fonctionne
Revious
7
which nginx

vous donnera le chemin du nginx utilisé


EDIT (2017-janvier-18)

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

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

which nginx

peut ne pas vous donner le chemin EXACT 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

vous pouvez également utiliser ceci:

nginx -V
Craig Wayne
la source
1
"qui" fonctionne sur la plupart des systèmes basés sur Unix. Je l'ai juste tapé sur Ubuntu pour m'assurer que je n'avais pas perdu la tête.
tqwhite
1
oh wow, je suis corrigé. modifier la réponse tout de suite. merci
Craig Wayne
1
which nginxaffiche uniquement le chemin par défaut de nginx pour l'utilisateur actuel (pas même l'utilisateur actuel - le shell actuel ). Il ne montre certainement pas le chemin pour lequel nginx "est utilisé".
Will Palmer
2

Toutes les autres réponses sont utiles, mais elles peuvent ne pas vous aider si ce nginxn'est pas le PATHcas , alors vous obtenez command not foundlorsque vous essayez de courirnginx :

J'ai nginx 1.2.1 sur Debian 7 Wheezy, l' nginxexécutable n'est pas activé PATH, donc j'avais besoin de le localiser d'abord. Il était déjà en cours d'exécution, donc en utilisant, ps aux | grep nginxj'ai découvert qu'il se trouvait sur /usr/sbin/nginx, donc j'avais besoin de courir/usr/sbin/nginx -t .

Si vous souhaitez utiliser un fichier de configuration par défaut non (non /etc/nginx/nginx.conf), exécutez avec le -cparamètre: /usr/sbin/nginx -c <path-to-configuration> -t.

Vous devrez peut-être également l' exécuter en tant queroot , sinon nginx pourrait ne pas avoir les autorisations pour ouvrir des journaux par exemple, de sorte que la commande échouerait.

David Ferenczy Rogožan
la source
1

En plus de la réponse de @Daniel Li, l'installation de nginx avec Valet utiliserait également la configuration de Velet, cela 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 peuvent être dans le fichier Valet.

Olusola Omosola
la source