Re: Nginx, ошибки.

Maxim Dounin mdounin на mdounin.ru
Пн Окт 29 12:15:47 UTC 2018


Hello!

On Sat, Oct 27, 2018 at 07:03:31AM -0400, Pavel-1 wrote:

> привет.
> 1) отправляю команду - 
>     service nginx start
> 
> 2) вот такой ответ - 
>     Job for nginx.service failed because the control process exited with
> error code.
>     See "systemctl status nginx.service" and "journalctl -xe" for details.
> 
> 3) отправляю команду - 
>     service nginx status
> 
> 4) вырезал из ответа - 
>     Active: failed (Result: exit-code) since Sat 2018-10-27 19:55:47 +09;
> 1min 31s ago
>     Docs: http://nginx.org/en/docs/
>     Process: 7561 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
> (code=exited, status=1/FAILURE)
>     окт 27 19:55:47 Tigina-Debian nginx[7561]: nginx: [emerg] still could
> not bind()
>     окт 27 19:55:47 Tigina-Debian systemd[1]: nginx.service: Control process
> exited, code=exited status=1
>     окт 27 19:55:47 Tigina-Debian systemd[1]: Failed to start nginx - high
> performance web server.
>     окт 27 19:55:47 Tigina-Debian systemd[1]: nginx.service: Unit entered
> failed state.
>     окт 27 19:55:47 Tigina-Debian systemd[1]: nginx.service: Failed with
> result 'exit-code'.
> 
> Посоветуйте как решить проблему с запуском. !!Версию показывает нормально!!

Сообщение от nginx тут видно ровно одно:

nginx: [emerg] still could not bind()

Чуть ранее должно быть ещё пять сообщений на уровне emerg, 
содержащих детали о том, на какой адрес nginx пытался сделать 
bind(), и почему у него это не получилось.  Как-то так:

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] still could not bind()

Странно, что в вашем случае их нет - но, возможно, по какой-то 
причине systemd их не показывает.  Загляните в лог nginx'а и/или 
попробуйте запустить nginx руками.

Обычно такие проблемы случаются, если вы пытаетесь запустить nginx 
на порту, который уже занят другим сервером.  Смотрите вывод 
"ss -nltp" или "netstat -an | grep LISTEN" и сравните с тем, что у вас 
в конфигурации nginx и на какие сокеты он ругается .

Кроме того, такие же проблемы будут, если вы пытаетесь заставить 
nginx для одного и того же порта сделать отдельные bind()'ы на 
wildcard-адресе и на конкретном IP-адресе - на Линуксе такое 
запрещено.  Либо же если у вас в конфиге nginx'а в разных модулях 
сконфигурированы конфликтующие listen-сокеты (e.g., "listen 80" в 
http и "listen 80" в stream) - сам nginx проблемы не увидет, но 
запуститься из-за конфликта не сможет.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru