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?
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).
% 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
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
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
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.
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.