Localize o arquivo nginx.conf que meu nginx está realmente usando

130

Trabalhando no servidor de um cliente em que existem duas versões diferentes do nginx instaladas. Acho que um deles foi instalado com o gerenciador de pacotes brew (é uma caixa osx) e o outro parece ter sido compilado e instalado com o Makefile empacotado pelo nginx. Eu procurei por todos os arquivos nginx.conf no servidor, mas nenhum desses arquivos define os parâmetros que o nginx está realmente usando quando eu o inicio no servidor. Onde está o arquivo nginx.conf que eu não conheço?

rgb
fonte

Respostas:

245

A execução da nginx -tlinha de comando emitirá um teste e anexará a saída com o caminho do arquivo ao arquivo de configuração (com uma mensagem de erro ou êxito).

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

Se o nginx foi executado sem a -copção, você pode usar a -Vopção para descobrir os argumentos de configuração que foram configurados com valores não padrão. Entre eles, o mais interessante para você é:

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname
VBart
fonte
1
Eu tentei executar os comandos, mas eles não funcionaram para mim. A segunda resposta funciona
Revious
32

Ambos nginx -te nginx -Vimprimiriam o caminho padrão do arquivo de configuração do 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 ...

Se desejar, você pode obter o arquivo de configuração:

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

Mesmo se você tiver carregado algum outro arquivo de configuração, eles ainda imprimirão o valor padrão.


ps aux mostraria o arquivo de configuração nginx carregado atualmente.

$ 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 você possa realmente obter o arquivo de configuração, por exemplo:

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

lhe dará o caminho do nginx sendo usado


EDIT (2017-Jan-18)

Graças ao comentário de Will Palmer nesta resposta, adicionei o seguinte ...

Se você instalou o nginx por meio de um gerenciador de pacotes como o HomeBrew ...

which nginx

pode não fornecer o caminho EXATO para o nginx que está sendo usado. No entanto, você pode encontrá-lo usando

realpath $(which nginx)

e como mencionado por @Daniel Li

você pode obter a configuração do nginx através do método dele

Como alternativa, você pode usar isso:

nginx -V
Craig Wayne
fonte
1
"what" funciona na maioria dos sistemas baseados em Unix. Eu apenas digitei no Ubuntu para ter certeza de que não tinha enlouquecido.
tqwhite
1
oh uau, eu estou corrigido. modificando a resposta imediatamente. obrigado
Craig Wayne
1
which nginxmostra apenas o caminho padrão do nginx para o usuário atual (nem mesmo o usuário atual - o shell atual ). Definitivamente, não mostra o caminho para o qual o nginx "está sendo usado".
Will Palmer
2

Todas as outras respostas são úteis, mas elas podem não ajudá-lo, caso nginxnão esteja, PATHportanto, você está command not foundtentando executarnginx :

Eu tenho o nginx 1.2.1 no Debian 7 Wheezy, o nginxexecutável não está ativado PATH, então eu precisava localizá-lo primeiro. Ele já estava em execução, então usando ps aux | grep nginxeu descobri que ele está localizado /usr/sbin/nginx, portanto, eu precisava executar/usr/sbin/nginx -t .

Se você deseja usar um arquivo de configuração não padrão (ou seja, não /etc/nginx/nginx.conf), execute-o com o -cparâmetro:/usr/sbin/nginx -c <path-to-configuration> -t .

Você também pode precisar executá-lo comoroot , caso contrário, o nginx pode não ter permissões para abrir, por exemplo, logs, para que o comando falhe.

David Ferenczy Rogožan
fonte
1

Além da resposta de @Daniel Li, a instalação do nginx com o Valet também usaria a configuração do Velet, isso é encontrado em "/usr/local/etc/nginx/valet/valet.conf". O arquivo nginx.conf teria importado esse arquivo conf Valet. As configurações necessárias podem estar no arquivo Valet.

Olusola Omosola
fonte