Назад | Перейти на главную страницу

Пользовательская директива в nginx генерирует ошибку, несмотря на то, что запущена как UID root

Я запускаю nginx на компьютере MacOS X, установленном с помощью brew, и когда я запускаю nginx, даже с sudo, я снова и снова получаю следующее предупреждение в моем файле журнала:

4/21/11 2:03:42 AM  org.nginx[3788] nginx: [warn] the "user" directive
makes sense only if the master process runs with super-user privileges,
ignored in /usr/local/etc/nginx/conf/nginx.conf:2

Из nginx.conf:

user  jschuur staff;

Я уже запускаю nginx с sudo, так как хочу, чтобы он слушал порт 80. Разве этого не должно быть достаточно, чтобы дать ему соответствующие привилегии суперпользователя?

Бинарный файл nginx в том виде, в каком он установлен:

jschuur@Glenna:sbin → master ls -la
total 4544
drwxr-xr-x   3 jschuur  staff      102 Apr 12 20:53 .
drwxrwxr-x  15 jschuur  staff      510 Apr 12 15:25 ..
-rwxr-xr-x   1 jschuur  staff  2325648 Apr 12 20:39 nginx

FWIW, я перекомпилировал двоичный файл, чтобы настроить пассажира, и переместил его из исходного местоположения в / usr / local / sbin.

Обновить: Как оказалось, MacOS X перезапускал nginx после того, как я его остановил, потому что список launchd в ~ / Library / LaunchAgents установил для него значение KeepAlive. Однако, поскольку я установил этот список в папку LaunchAgents моего локального пользователя, а не в / Library / LaunchAgents (или еще лучше / Library / LaunchDaemons, которые запускаются до того, как вы даже войдете в систему), он не был выполнен с правами root. Из-за ошибки, связанной с отсутствием разрешений на использование порта 80, он фактически сразу же завершил работу, но по-прежнему записал в тот же файл журнала, что и процесс nginx, который я начал с sudo. Я думал, что ошибки, возникающие из-за автоматического перезапуска, на самом деле происходят из-за моего ручного перезапуска через sudo.

Итак, в итоге проблема решена. Настоящая проблема здесь заключалась в том, что инструкции homebrew специально просили вас установить файл plist в область, которая не позволяет локальному сайту использовать порт 80.

Вы должны проверить где угодно sudo id команда показывает uid = 0