Localice el archivo nginx.conf que mi nginx realmente está usando

130

Trabajando en el servidor de un cliente donde hay dos versiones diferentes de nginx instaladas. Creo que uno de ellos se instaló con el administrador de paquetes brew (es una caja osx) y el otro parece haber sido compilado e instalado con el Makefile empaquetado nginx. Busqué todos los archivos nginx.conf en el servidor, pero ninguno de estos archivos define los parámetros que nginx está utilizando realmente cuando lo inicio en el servidor. ¿Dónde está el archivo nginx.conf que desconozco?

rgb
fuente

Respuestas:

245

La ejecución de nginx -tsu línea de comando emitirá una prueba y agregará la salida con la ruta del archivo al archivo de configuración (ya sea con un mensaje de error o de éxito).

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

Si nginx se ejecutó sin la -copción, puede usar la -Vopción para averiguar los argumentos de configuración que se establecieron en valores no estándar. Entre ellos, los más interesantes para usted son:

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname
VBart
fuente
1
Traté de ejecutar los comandos pero no funcionaron para mí. La segunda respuesta funciona
Anterior
32

Tanto nginx -ty nginx -Vse imprimirá la ruta del archivo de configuración por defecto 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 lo desea, puede obtener el archivo de configuración de la siguiente manera:

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

Incluso si ha cargado algún otro archivo de configuración, todavía imprimirán el valor predeterminado.


ps aux le mostraría el archivo de configuración nginx cargado actual.

$ 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

Para que pueda obtener el archivo de configuración, por ejemplo:

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

le dará la ruta del nginx que se está utilizando


EDITAR (2017-Jan-18)

Gracias al comentario de Will Palmer sobre esta respuesta, he agregado lo siguiente ...

Si ha instalado nginx a través de un administrador de paquetes como HomeBrew ...

which nginx

Es posible que no le proporcione la ruta EXACTA al nginx que se está utilizando. Sin embargo, puedes encontrarlo usando

realpath $(which nginx)

y como lo mencionó @Daniel Li

puedes obtener la configuración de nginx a través de su método

alternativamente puedes usar esto:

nginx -V
Craig Wayne
fuente
1
"which" funciona en la mayoría de los sistemas basados ​​en Unix. Simplemente lo escribí en Ubuntu para asegurarme de que no me había vuelto loco.
tqwhite
1
oh wow, estoy corregido. modificando la respuesta de inmediato. gracias
Craig Wayne
1
which nginxsolo muestra la ruta predeterminada para nginx para el usuario actual (ni siquiera el usuario actual, el shell actual ). Definitivamente no muestra la ruta por la cual nginx "se está utilizando".
Will Palmer
2

Todas las demás respuestas son útiles, pero es posible que no lo ayuden en caso de nginxque no esté activado, por PATHlo que obtiene command not foundcuando intenta ejecutarnginx :

Tengo nginx 1.2.1 en Debian 7 Wheezy, el nginxejecutable no está activado, por PATHlo que necesitaba localizarlo primero. Ya estaba ejecutándose, así que usando ps aux | grep nginxdescubrí que está ubicado /usr/sbin/nginx, por lo tanto, necesitaba ejecutar/usr/sbin/nginx -t .

Si desea utilizar un archivo de configuración no predeterminada (es decir, no /etc/nginx/nginx.conf), ejecutarlo con el -cparámetro: /usr/sbin/nginx -c <path-to-configuration> -t.

También es posible que deba ejecutarloroot , de lo contrario, nginx puede no tener permisos para abrir, por ejemplo, registros, por lo que el comando fallará.

David Ferenczy Rogožan
fuente
1

Además de la respuesta de @Daniel Li, la instalación de nginx con Valet también usaría la configuración de Velet, esto se encuentra en "/usr/local/etc/nginx/valet/valet.conf". El archivo nginx.conf habría importado este archivo conf de Valet. La configuración que necesita puede estar en el archivo Valet.

Olusola Omosola
fuente