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

132

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

RGB
источник

Ответы:

247

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

Даниэль Ли
источник
34

Оба 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
Цзин Ли
источник
33
% 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
VBart
источник
1
Я пытался запустить команды, но они не работали у меня .. Второй ответ работает
Revious
7
which nginx

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


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

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

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

which nginx

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

realpath $(which nginx)

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

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

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

nginx -V
Крейг Уэйн
источник
1
"which" работает в большинстве систем на базе Unix. Я просто набрал его в Ubuntu, чтобы убедиться, что не сошел с ума.
tqwhite
1
о, вау, я поправляюсь. сразу изменить ответ. спасибо
Craig Wayne
1
which nginxпоказывает только путь по умолчанию для nginx для текущего пользователя (даже не для текущего пользователя - текущей оболочки ). Он определенно не показывает путь, по которому «используется» nginx.
Уилл Палмер
2

Все остальные ответы полезны , но они не могут помочь вам в случае nginxне на PATHтак что вы получаете command not foundпри попытке запуститьnginx :

У меня nginx 1.2.1 на Debian 7 Wheezy, nginxисполняемый файл не включен PATH, поэтому мне нужно сначала найти его. Он уже был запущен, поэтому, используя, ps aux | grep nginxя обнаружил, что он находится /usr/sbin/nginx, поэтому мне нужно было запустить/usr/sbin/nginx -t .

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

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

Давид Ференци Рогожан
источник
1

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

Олусола Омосола
источник