Знайдіть файл nginx.conf, який фактично використовує nginx


130

Робота на сервері клієнта, де встановлені дві різні версії nginx. Я думаю, один з них був встановлений разом із менеджером пакунків brew (його вікно osx), а інший, здається, був скомпільований та встановлений за допомогою nfilex упакованого Makefile. Я шукав усі файли nginx.conf на сервері, але жоден із цих файлів не визначає параметри, які nginx насправді використовує, коли я запускаю його на сервері. Де файл nginx.conf, про який я не знаю?

Відповіді:


245

Запуск nginx -tчерез ваш командний рядок видасть тест і додасть висновок файловим шляхом до файлу конфігурації (з повідомленням про помилку чи успіх).


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

1
Я намагався запускати команди, але вони не спрацювали для мене .. Другий
анвер

32

І те, 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

7
which nginx

дасть вам шлях використовуваного nginx


EDIT (2017-січень-18)

Завдяки коментарю Вілла Палмера до цієї відповіді я додав наступне ...

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

which nginx

може не надати точний шлях до використовуваної nginx. Однак ви можете знайти його за допомогою

realpath $(which nginx)

і як згадував @Daniel Li

Ви можете отримати конфігурацію nginx за допомогою його методу

Ви також можете скористатися цим:

nginx -V

1
"який" працює в більшості систем на базі Unix. Я просто набрав його на Ubuntu, щоб переконатися, що я не втратив розуму.
tqwhite

1
о, ух, я стою виправлений. модифікація відповіді відразу. спасибі
Крейг Уейн

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. Потрібні настройки можуть бути у файлі Valet.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.