Ошибки

Ошибка nginx duplicate location: два одинаковых блока location

В одном блоке server два блока location с одинаковым адресом. Перенесите строки из второго блока в первый, а второй удалите.

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

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

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

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

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

2026/10/09 12:00:00 [emerg] 2345#2345: duplicate location "/" in /etc/nginx/sites-enabled/example.com:20
nginx: configuration file /etc/nginx/nginx.conf test failed

«Повторяется location "/"». Блок location задаёт настройки для адресов, которые начинаются с указанного пути. В одном блоке server два location с одинаковым путём, и nginx не знает, какой из них брать. Номер в конце — строка второго блока. Дата, время и номер процесса у вас будут свои. В других сборках nginx та же строка начинается со слов nginx: [emerg].

Одинаковыми считаются блоки с одним и тем же путём, если оба со знаком = или оба без него. location / и location ^~ / тоже совпадут. А location / и location = / — разные блоки, ошибки не будет. Блоки с регулярными выражениями — со знаком ~ — nginx так не проверяет.

Причины:

  • в файл сайта вставили блок из инструкции, а такой location в файле уже был;
  • одинаковый location пришёл из файла, который подключён строкой include.

Шаг 1. Найдите оба блока

grep -n 'location' /etc/nginx/sites-available/example.com

Пример ответа:

12:    location / {
20:    location / {

Блоки начинаются на строках 12 и 20.

Если путь в сообщении ведёт в другой файл

Если в сообщении не файл сайта, а, например, файл из /etc/nginx/snippets/, второй блок пришёл через строку include. Уберите повтор в одном из двух файлов.

Шаг 2. Объедините их в один

Откройте файл на строке второго блока:

sudo nano -l +20 /etc/nginx/sites-available/example.com

Например, было так:

    location / {
        try_files $uri $uri/ =404;
    }

    location / {
        client_max_body_size 20m;
    }

Перенесите строки из второго блока в первый, а второй удалите целиком — от location / { до его }. Удалять строки удобно сочетанием Ctrl+K. Должно получиться так:

    location / {
        try_files $uri $uri/ =404;
        client_max_body_size 20m;
    }

Если в двух блоках одна и та же директива с разными значениями, оставьте одну — с тем значением, которое вам нужно. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.

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

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

sudo systemctl reload nginx

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

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

sudo nginx -t отвечает syntax is ok и test is successful. Откройте сайт и проверьте, что работает то, ради чего добавляли второй блок.

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

СообщениеЧем отличается
a duplicate default serverПовторяется пометка default_server на одном порту
conflicting server nameОдно имя сайта в двух блоках server
directive is not allowed herelocation стоит не внутри блока server

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

Источники

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

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

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