it-swarm.com.ru

Найдите файл nginx.conf, который фактически использует мой nginx

Работа на клиентском сервере, где установлены две разные версии nginx. Я думаю, что один из них был установлен с помощью менеджера пакетов brew (это osx box), а другой, похоже, был скомпилирован и установлен с помощью упакованного с nginx Makefile. Я искал все файлы nginx.conf на сервере, но ни один из этих файлов не определяет параметры, которые фактически использует nginx при запуске его на сервере. Где находится файл nginx.conf, о котором я не знаю?

93
b.b.

Выполнение nginx -t через командную строку выдаст тест и добавит выходные данные с путем к файлу конфигурации в файл конфигурации (с сообщением об ошибке или об успехе).

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

Если nginx был запущен без опции -c, то вы можете использовать опцию -V, чтобы узнать аргументы конфигурации, для которых были установлены нестандартные значения. Среди них наиболее интересными для вас являются:

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

И nginx -t, и nginx -V будут распечатывать путь к файлу конфигурации 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 ...

Если вы хотите, вы можете получить файл конфигурации:

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

Даже если вы загрузили какой-нибудь другой файл конфигурации, они все равно распечатали бы значение по умолчанию.


ps aux покажет вам текущий загруженный файл конфигурации nginx.

$ 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

Чтобы вы могли получить конфигурационный файл, например:

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

даст вам путь используемого nginx


РЕДАКТИРОВАТЬ (2017-январь-18)

Благодаря комментарию Уилла Палмера к этому ответу, я добавил следующее ...

Если вы установили nginx через менеджер пакетов, например HomeBrew ...

which nginx

может не дать вамТОЧНЫЙпуть к используемому nginx. Однако вы можете найти его, используя

realpath $(which nginx)

и как упомянуто @Daniel Li

вы можете получить конфигурацию nginx через его метод

в качестве альтернативы вы можете использовать это:

nginx -V
6
Craig Wayne

В дополнение к ответу @Daniel Li, установка nginx с Valet также будет использовать конфигурацию Velet, это можно найти в "/usr/local/etc/nginx/valet/valet.conf". Файл nginx.conf импортировал бы этот файл настроек Valet. Необходимые настройки могут быть в файле Valet. 

1
Olusola Omosola

Я бы просто добавил, в моем случае, что это nginx 1.2.1 на Debian 7 Wheezy, nginx не на PATH, он расположен на /usr/sbin/nginx, поэтому мне нужно было запустить /usr/sbin/nginx -t.

Если вы хотите использовать файл конфигурации не по умолчанию (т.е. не /etc/nginx/nginx.conf), запустите его с параметром -c: /usr/sbin/nginx -c <path-to-configuration> -t.

Вам также может понадобиться запустить его как root, иначе nginx может не иметь прав для открытия, например, журналов, поэтому команда не будет выполнена.

0
Dawid Ferenczy