различное поведение между `/etc/init.d/nginx start` и` nginx`

Я получил свой /etc/init.d/nginx сценарий инициализации отсюда: https://www.nginx.com/resources/wiki/start/topics/examples / redhatnginxinit /

в моем /etc/nginx/nginx.conf , там include /etc/nginx/conf.d/*.conf; , который включает файлы конфигурации моего веб-сайта.

однако после /etc/init.d/nginx start кажется, что nginx не загружает эти файлы конфигурации и возвращает 502 при доступе .

с другой стороны, запуск nginx с помощью команды nginx работает нормально.

что здесь не так?

2
задан 25 July 2017 в 17:14
3 ответа

Похоже, ваша проблема связана с неправильным файлом инициализации. Обычно nginx устанавливает его из RPM и никаких дополнительных файлов не требуется. В вашей ссылке указано, что это файл инициализации, протестированный на CentOS 5, но вы используете CentOS 6, где он не тестировался. Попробуйте удалить этот файл инициализации и переустановить nginx из RPM или репозитория, он должен установить один хороший файл инициализации.

Если вы не хотите этого делать, вы можете попытаться скопировать файл инициализации из туда . Это копия файла инициализации из установленного на CentOS 6 nginx.

2
ответ дан 3 December 2019 в 11:28

Вы используете сценарии sysvinit, но Red Hat (при условии, что вы используете Red Hat / CentOS из ссылки) перешла на systemd.

Create

/lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

После того, как об этом позаботятся,

systemctl enable nginx.service && systemctl start nginx.service

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

0
ответ дан 3 December 2019 в 11:28

Поскольку CentOS 6 не предоставляет собственных пакетов nginx, важно понимать, откуда взялся ваш пакет. Вывод nginx -V даст важные детали.

Я предполагаю, что ошибки HTTP 502 указывают на неспособность процесса nginx взаимодействовать с сервером приложений. Nginx error_log будет содержать подробную информацию об этом условии. Выполнение setenforce 0 перед перезапуском службы nginx поможет понять, связана ли проблема с механизмом SELinux.

0
ответ дан 3 December 2019 в 11:28

Теги

Похожие вопросы