Предупреждение nginx conflicting server name: одно имя в двух блоках
Одно и то же имя сайта на одном порту стоит в двух блоках server. nginx берёт первый блок, а второй для этого имени не использует. Найдите лишний блок и уберите его.
Содержание 9
Что сделать прямо сейчас
- Найдите все файлы, где стоит это имя, — шаг 1.
- Уберите копию файла или лишний блок — шаг 2.
- Проверьте и примените настройки — шаг 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 successfulconflicting 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. В других версиях слова могут немного отличаться.
Источники
- Исходный код nginx 1.24.0: ngx_http.c — текст conflicting server name.
- Исходный код nginx 1.24.0: ngx_conf_file.c — файлы по маске nginx подключает через функцию glob.
- man glob — glob возвращает имена файлов отсортированными.
- Файл nginx.conf из пакета nginx в Ubuntu 24.04 — строка include /etc/nginx/sites-enabled/*.
- man grep — ключи -R и -n.
- Документация nginx: как обрабатываются запросы — как nginx выбирает блок server по имени.
Сверено 9–10 октября 2026 года.
Что почитать дальше
- Все ошибки nginx.
- Как разместить сайт на VPS: шаг 4 — как выглядит файл сайта.
- Как поставить сертификат на свой VPS.
Проверено и обновлено: 10.10.2026