Ошибка nginx a duplicate default server: два сайта по умолчанию
Пометка default_server для одного порта стоит в двух блоках server — у вас и в стандартном файле default из Ubuntu. Уберите её из своего файла или отключите стандартный сайт.
Содержание 9
Что сделать прямо сейчас
- Найдите, где стоит default_server, — шаг 1.
- Уберите пометку из своего файла или отключите стандартный сайт — шаг 2.
- Проверьте и примените настройки — шаг 3.
Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
Что значит это сообщение
2026/10/09 12:00:00 [emerg] 2345#2345: a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/example.com:2
nginx: configuration file /etc/nginx/nginx.conf test faileddefault_server — пометка в строке listen: «сайт по умолчанию». Его nginx показывает, когда имя в запросе не подходит ни к одному блоку server, — например, когда сайт открывают по IP-адресу. Для каждого адреса и порта такой блок может быть только один. Сообщение значит, что на 0.0.0.0:80 — порт 80 — их два. Для IPv6 в сообщении будет [::]:80. Дата, время и номер процесса у вас будут свои. В других сборках nginx та же строка начинается со слов nginx: [emerg].
В Ubuntu после установки nginx уже включён стандартный сайт — файл /etc/nginx/sites-enabled/default. В нём строки 22 и 23:
listen 80 default_server;
listen [::]:80 default_server;Если в своём файле вы тоже написали listen 80 default_server;, получится две пометки. Файлы nginx читает по алфавиту, и сообщение указывает на ту, что он встретил второй. Файл default идёт раньше example.com, поэтому в примере сообщение указывает на ваш файл. Если ваш файл по алфавиту раньше, сообщение укажет на default:22.
Шаг 1. Найдите все пометки default_server
sudo grep -Rn 'default_server' /etc/nginx/sites-enabled/ /etc/nginx/conf.d/Пример ответа:
/etc/nginx/sites-enabled/default:22: listen 80 default_server;
/etc/nginx/sites-enabled/default:23: listen [::]:80 default_server;
/etc/nginx/sites-enabled/default:27: # listen 443 ssl default_server;
/etc/nginx/sites-enabled/default:28: # listen [::]:443 ssl default_server;
/etc/nginx/sites-enabled/example.com:2: listen 80 default_server;Строки с решёткой # выключены и не считаются. Пометка на порт 80 стоит в файле default и в файле example.com.
Шаг 2. Оставьте одну пометку
Вариант 1. Уберите default_server из своего файла
Откройте свой файл на строке из сообщения:
sudo nano -l +2 /etc/nginx/sites-available/example.comУдалите из строки слово default_server — должно остаться так:
listen 80;Если ниже есть listen [::]:80 default_server;, уберите слово и там. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
Вариант 2. Отключите стандартный сайт
Если стандартная страница nginx вам не нужна, отключите стандартный сайт. Команда удаляет только ссылку из sites-enabled — сам файл останется в sites-available:
sudo rm /etc/nginx/sites-enabled/defaultТогда сайтом по умолчанию станет ваш блок с пометкой default_server. Включить стандартный сайт обратно:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/Если не уверены, какой вариант выбрать, берите первый.
Если в сообщении a duplicate listen
2026/10/09 12:00:00 [emerg] 2345#2345: a duplicate listen 0.0.0.0:80 in /etc/nginx/sites-enabled/example.com:3В одном блоке server два раза написана одна и та же строка listen. Удалите строку из сообщения: откройте файл на ней и нажмите Ctrl+K.
Если в сообщении duplicate listen options
Параметры вроде reuseport или backlog в строке listen указаны для одного и того же порта в двух блоках server. Оставьте их только в одном блоке.
Шаг 3. Проверьте и примените настройки
Проверьте настройки ещё раз командой sudo nginx -t. Когда в ответе будут слова syntax is ok и test is successful, примените их:
sudo systemctl reload nginxЕсли команда ничего не ответила, настройки применены.
Как проверить
sudo nginx -t отвечает syntax is ok и test is successful. Откройте сайт по имени и по IP-адресу сервера и посмотрите, какой блок отвечает.
Похожие ошибки
| Сообщение | Чем отличается |
|---|---|
| conflicting server name | Повторяется имя сайта, а не пометка. Это предупреждение — nginx работает |
| duplicate location | Повторяется блок location внутри server |
| Address already in use | Порт занят другой программой |
Тексты сообщений на этой странице сверены с исходным кодом nginx 1.24.0 — эта версия стоит в Ubuntu 24.04. В других версиях слова могут немного отличаться.
Источники
- Исходный код nginx 1.24.0: ngx_http.c — тексты a duplicate default server, a duplicate listen и duplicate listen options.
- Документация nginx: модуль ngx_http_core_module — параметр default_server директивы listen.
- Документация nginx: как обрабатываются запросы — какой блок становится сервером по умолчанию.
- Файл sites-available/default из пакета nginx в Ubuntu 24.04 — строки 22 и 23.
- man rm, man ln.
Сверено 9–10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026