Ошибки

Предупреждение nginx conflicting server name: одно имя в двух блоках

Одно и то же имя сайта на одном порту стоит в двух блоках server. nginx берёт первый блок, а второй для этого имени не использует. Найдите лишний блок и уберите его.

Обновлено 10.10.2026≈ 5 мин чтения
Содержание 9

Что сделать прямо сейчас

  1. Найдите все файлы, где стоит это имя, — шаг 1.
  2. Уберите копию файла или лишний блок — шаг 2.
  3. Проверьте и примените настройки — шаг 3.

Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

Что значит это сообщение

2026/10/09 12:00:00 [warn] 2345#2345: conflicting server name "example.com" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

conflicting server name — «имя сервера конфликтует». Имя example.com на порту 80 указано в двух блоках server. Слово ignored значит, что второй блок для этого имени nginx не использует: запросы к example.com попадут в первый.

Это предупреждение [warn]: проверка проходит и nginx работает. Но если вы правите второй блок, правки на сайте не видны — nginx отвечает по первому. Файла и строки в сообщении нет. Дата, время и номер процесса у вас будут свои. В других сборках nginx та же строка начинается со слов nginx: [emerg].

Файлы из /etc/nginx/sites-enabled/ nginx читает по алфавиту, поэтому первым окажется блок из файла, имя которого стоит раньше.

Причины:

  • в папке sites-enabled лежит копия файла сайта — например, example.com.bak или example.com.save. nginx подключает из этой папки все файлы, какие бы ни были у них окончания;
  • одно имя написано в файлах двух разных сайтов;
  • в одном файле два блока server с этим именем и с одинаковым listen — например, блок скопировали, чтобы сделать из копии блок для HTTPS, а порт в копии не поменяли.

Шаг 1. Найдите, где повторяется имя

sudo grep -Rn 'server_name' /etc/nginx/sites-enabled/ /etc/nginx/conf.d/

Ключ -R заставляет grep заходить по ссылкам из sites-enabled в настоящие файлы, -n показывает номер строки. Пример ответа:

/etc/nginx/sites-enabled/default:46:	server_name _;
/etc/nginx/sites-enabled/example.com:4:    server_name example.com www.example.com;
/etc/nginx/sites-enabled/example.com.bak:4:    server_name example.com www.example.com;

Имя example.com стоит в двух файлах: example.com и его копии example.com.bak.

Шаг 2. Уберите лишний блок

Если это копия файла

Перенесите копию из sites-enabled в домашнюю папку — там nginx её не прочитает, а вы сможете вернуться к ней:

sudo mv /etc/nginx/sites-enabled/example.com.bak ~/

Копии файлов сайтов держите вне папок sites-enabled и conf.d.

Если имя стоит в двух разных сайтах

Решите, какой из файлов отвечает за этот сайт, и удалите имя из строки server_name другого файла. Править нужно оригинал в /etc/nginx/sites-available/.

Если два блока в одном файле

Откройте файл и найдите блоки server с этим именем. На одном порту имя должно стоять только в одном блоке. Сравните строки listen: если в обоих блоках один и тот же порт, удалите лишний блок целиком или поменяйте порт в копии — для HTTPS это listen 443 ssl;.

Шаг 3. Проверьте и примените настройки

Проверьте настройки ещё раз командой sudo nginx -t. Когда в ответе будут слова syntax is ok и test is successful, примените их:

sudo systemctl reload nginx

Если команда ничего не ответила, настройки применены.

Как проверить

sudo nginx -t отвечает без строки conflicting server name. Откройте сайт в браузере и проверьте, что правки видны.

Похожие ошибки

СообщениеЧем отличается
a duplicate default serverДублируется не имя, а пометка default_server — nginx не запустится
could not build server_names_hashНе хватает места под длинные имена сайтов

Тексты сообщений на этой странице сверены с исходным кодом nginx 1.24.0 — эта версия стоит в Ubuntu 24.04. В других версиях слова могут немного отличаться.

Источники

Сверено 9–10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026