Рейтинг:2

nginx try_files вызывает двойные компоненты пути, из-за которых запросы не выполняются

флаг bi

Я пытаюсь сделать две соседние папки, /var/www/сайт и /var/www/overlay@сайт сосуществовать на одном сайте (для прав доступа к файлам и инструментов развертывания).

Я попытался настроить базовую конфигурацию, например (с удаленной конфигурацией HTTPS):

сервер {
    имя_сервера пример.com;
    корень /var/www/сайт;

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

в это, переместив корень на уровень выше:

сервер {
    имя_сервера пример.com;
    корень /var/www;

    location / { try_files /site$uri /site$uri/ /overlay@site$uri /overlay@site$uri/ =404; }
}

но это заставляет все страницы возвращать 404 по какой-то причине, которую я не могу понять. Если я включу ведение журнала отладки, он, похоже, попытается загрузить, например. /var/www/сайт/сайт/index.html, и я не уверен, где удвоилось сайт исходит из.

Вот файл debug.log для запроса:

18.12.2021, 14:56:22 [уведомление] 451123#451123: начался сигнальный процесс
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL_do_handshake: -1
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL_get_error: 2
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 обработчик рукопожатия SSL: 0
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 новая сессия ssl: 775CFEDA:32:169
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 новая сессия ssl: D9E5A8B9:32:169
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL_do_handshake: 1
18.12.2021 14:56:37 [отладка] 451127#451127: *1 SSL: TLSv1.3, шифр: "TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=любой Au=любой Enc=AESGCM(256) Mac=AEAD"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 многоразовое соединение: 1
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 обработчик HTTP-запроса на ожидание
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 malloc: 00005590274BA790:1024
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL_read: 399
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL_read: -1
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL_get_error: 2
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 многоразовое соединение: 0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 posix_memalign: 00005590274DBCB0:4096 @16
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 строка запроса процесса http
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 строка HTTP-запроса: «GET / HTTP/1.1»
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http uri: "/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 аргументы http: ""
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 расширение http: ""
18.12.2021 14:56:37 [отладка] 451127#451127: *1 posix_memalign: 00005590274DCCC0:4096 @16
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 строка заголовка запроса процесса http
18.12.2021 14:56:37 [отладка] 451127#451127: *1 HTTP-заголовок: «User-Agent: Mozilla/5.0+ (совместимый; UptimeRobot/2.0; http://www.uptimerobot.com/)»
18.12.2021 14:56:37 [отладка] 451127#451127: *1 заголовок http: "Принять: текст/html,приложение/xhtml+xml,приложение/xml;q=0.9,*/*;q=0.8 "
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 заголовок http: «Accept-Language: en-US,en;q=0.8»
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 заголовок http: «Accept-Charset: ISO-8859-1,UTF-8;q=0,7,*;q=0,7»
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 заголовок http: «Соединение: закрыть»
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 заголовок http: "cache-control: no-cache"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 заголовок http: "Referer: https://www.witchoflight.com"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 HTTP-заголовок: «хост: www.witchoflight.com»
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 заголовок http: "accept-encoding: gzip, deflate"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 заголовок http выполнен
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 таймер событий del: 3: 3230777386
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 0
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза перезаписи: 1
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 тестовое местоположение: "/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 с использованием конфигурации "/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http cl:-1 max:1048576
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза перезаписи: 3
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза перезаписи: 4
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 этап перезаписи поста: 5
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 6
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 7
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 8
18.12.2021 14:56:37 [отладка] 451127#451127: *1 фаза доступа: 9
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза доступа: 10
18.12.2021 14:56:37 [отладка] 451127#451127: *1 фаза доступа: 11
18.12.2021 14:56:37 [отладка] 451127#451127: *1 фаза доступа: 12
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза доступа к сообщению: 13
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 14
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 попытка обработчика файлов
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 копия http-скрипта: "/www.witchoflight.com"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 HTTP-скрипт var: "/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 попытка использовать файл: "/www.witchoflight.com/" "/var/www/www.witchoflight.com/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 копия http-скрипта: "/www.witchoflight.com"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 HTTP-скрипт var: "/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 попытка использовать каталог: "/www.witchoflight.com/" "/var/www/www.witchoflight.com/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 попробуйте файл uri: "/www.witchoflight.com/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 15
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза контента: 16
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза контента: 17
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза контента: 18
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 открытый индекс "/var/www/www.witchoflight.com/index.html"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 внутреннее перенаправление: "/www.witchoflight.com/index.html?"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза перезаписи: 1
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 тестовое местоположение: "/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 тестовое местоположение: ".gitignore"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 с использованием конфигурации "/"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http cl:-1 max:1048576
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза перезаписи: 3
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза перезаписи: 4
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 этап перезаписи поста: 5
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 6
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 7
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 8
18.12.2021 14:56:37 [отладка] 451127#451127: *1 фаза доступа: 9
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза доступа: 10
18.12.2021 14:56:37 [отладка] 451127#451127: *1 фаза доступа: 11
18.12.2021 14:56:37 [отладка] 451127#451127: *1 фаза доступа: 12
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фаза доступа к сообщению: 13
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 общая фаза: 14
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 попытка обработчика файлов
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 копия http-скрипта: "/www.witchoflight.com"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http script var: "/www.witchoflight.com/index.html"
18.12.2021 14:56:37 [отладка] 451127#451127: *1 попытка использовать файл: "/www.witchoflight.com/www.witchoflight.com/index.html" "/var/www/www. witchoflight.com/www.witchoflight.com/index.html"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 копия http-скрипта: "/www.witchoflight.com"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http script var: "/www.witchoflight.com/index.html"
18.12.2021 14:56:37 [отладка] 451127#451127: *1 попытка использовать каталог: "/www.witchoflight.com/www.witchoflight.com/index.html" "/var/www/www. witchoflight.com/www.witchoflight.com/index.html"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 попытка использовать файл: "=404" "/var/www=404"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 HTTP-запрос финализации: 404, "/www.witchoflight.com/index.html?" а:1, в:2
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 специальный ответ http: 404, "/www.witchoflight.com/index.html?"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http set discard body
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 ошибка отслеживания ошибок uploadprogress: 404
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 средство отслеживания ошибок загрузки не отслеживает в этом месте
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 заголовок фильтра xslt
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 HTTP/1.1 404 Не найдено
Сервер: nginx/1.18.0 (Ubuntu)
Дата: суббота, 18 декабря 2021 г., 19:56:37 по Гринвичу
Тип содержимого: текст/html
Передача-кодирование: по частям
Подключение: близко
Кодировка содержимого: gzip

18.12.2021 14:56:37 [отладка] 451127#451127: *1 запись нового buf t:1 f:0 00005590274DD280, pos 00005590274DD280, размер: 190 файл: 0, размер: 0
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http фильтр записи: l:0 f:0 s:190
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 Фильтр вывода http "/www.witchoflight.com/index.html?"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фильтр копирования http: "/www.witchoflight.com/index.html?"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фильтр изображения
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 корпус фильтра xslt
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http фильтр задержки "/www.witchoflight.com/index.html?" 00005590274DD478
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 фильтр http gzip
18.12.2021 14:56:37 [отладка] 451127#451127: *1 malloc: 0000559027619160:12288
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 gzip alloc: n:1 s:5952 a:8192 p:0000559027619160
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 gzip alloc: n:512 s:2 a:1024 p:000055902761B160
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 gzip alloc: n:512 s:2 a:1024 p:000055902761B560
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 gzip alloc: n:512 s:2 a:1024 p:000055902761B960
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 gzip alloc: n:256 s:4 a:1024 p:000055902761BD60
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 gzip в: 00005590274DD4A8
18.12.2021 14:56:37 [отладка] 451127#451127: *1 gzip in_buf:00005590274DD350 ni:00005590262646C0 ai:100
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 malloc: 000055902761C170:4096
18.12.2021 14:56:37 [отладка] 451127#451127: *1 deflate in: ni:00005590262646C0 no:000055902761C170 ai:100 ao:4096 fl:0 redo:0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 выкачать: ni:0000559026264724 нет:000055902761C17A ai:0 ao:4086 rc:0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 gzip in_buf:00005590274DD350 pos:00005590262646C0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 gzip в: 00005590274DD4B8
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 gzip in_buf:00005590274DD3A0 ni:0000559026264E20 ai:62
18.12.2021 14:56:37 [отладка] 451127#451127: *1 deflate in: ni:0000559026264E20 no:000055902761C17A ai:62 ao:4086 fl:4 redo:0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 выкачать: ni:0000559026264E5E no:000055902761C1EB ai:0 ao:3973 rc:1
18.12.2021 14:56:37 [отладка] 451127#451127: *1 gzip in_buf:00005590274DD3A0 pos:0000559026264E20
18.12.2021 14:56:37 [отладка] 451127#451127: *1 бесплатно: 0000559027619160
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http чанк: 123
18.12.2021 14:56:37 [отладка] 451127#451127: *1 записать старый buf t:1 f:0 00005590274DD280, pos 00005590274DD280, размер: 190 файл: 0, размер: 0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 запись нового buf t:1 f:0 00005590274DD588, pos 00005590274DD588, размер: 4 файл: 0, размер: 0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 запись нового buf t:1 f:0 000055902761C170, pos 000055902761C170, размер: 123 файл: 0, размер: 0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 запись нового buf t:0 f:0 0000000000000000, pos 0000559026237155, размер: 7 файл: 0, размер: 0
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http фильтр записи: l:1 f:1 s:324
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 предел фильтра записи http 0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 posix_memalign: 0000559027618E60:512 @16
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 malloc: 0000559027611C10:16384
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 копия буфера SSL: 190
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 копия буфера SSL: 4
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 копия буфера SSL: 123
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 копия буфера SSL: 7
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL для записи: 324
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL_write: 324
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 http фильтр записи 0000000000000000
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 Фильтр копирования http: 0 "/www.witchoflight.com/index.html?"
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 HTTP-запрос финализации: 0, "/www.witchoflight.com/index.html?" а:1, в:2
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 количество HTTP-запросов: 2 blk: 0
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 HTTP-запрос финализации: -4, "/www.witchoflight.com/index.html?" а:1, в:1
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 количество HTTP-запросов: 1 блок: 0
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 HTTP-запрос на закрытие
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 обработчик журнала http
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 обработчик журнала HTTP geoip2
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 бесплатно: 000055902761C170
18.12.2021 14:56:37 [отладка] 451127#451127: *1 бесплатно: 0000000000000000
18.12.2021 14:56:37 [отладка] 451127#451127: *1 бесплатно: 00005590274DBCB0, неиспользовано: 1
18.12.2021 14:56:37 [отладка] 451127#451127: *1 бесплатно: 00005590274DCCC0, неиспользовано: 1469
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 закрыть http-соединение: 3
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 SSL_shutdown: 1
18.12.2021, 14:56:37 [отладка] 451127#451127: *1 многоразовое соединение: 0
18.12.2021 14:56:37 [отладка] 451127#451127: *1 бесплатно: 0000559027611C10
18.12.2021 14:56:37 [отладка] 451127#451127: *1 бесплатно: 00005590274BA790
18.12.2021 14:56:37 [отладка] 451127#451127: *1 бесплатно: 000055902750CEC0, неиспользовано: 8
18.12.2021 14:56:37 [отладка] 451127#451127: *1 бесплатно: 0000559027618E60, неиспользовано: 384
Рейтинг:1
флаг bi

Тут дело оказалось в /сайт$uri/ записи. Они получают перенаправление с показатель правило, и поэтому запрос, например. /фу находится в /сайт/foo/index.html, и это делает внутреннее перенаправление на /сайт/foo/index.html, который затем терпит неудачу, потому что не может найти /сайт/сайт/foo/index.html.

Я смог решить это, добавив

расположение /сайт/ { try_files $uri =404; }
location /overlay@site/ { try_files $uri =404; }

но у этого, кажется, все еще есть некоторые причуды, связанные с перенаправлениями. Я получаю более надежное исправление, изменяющее мой оверлей, чтобы он работал следующим образом:

сервер {
    имя_сервера пример.com;
    корень /var/www/сайт;

    location / { try_files $uri $uri/ @overlay; }
    местоположение @overlay {
        корень /var/www/overlay@site;
        try_files $uri $uri/ =404;
    }
}

(Благодаря Пол Хуонг помогает мне диагностировать проблему.)

djdomi avatar
флаг za
не забудьте принять свой собственный ответ, иначе мы будем помнить вас до конца жизни на этом вопросе

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.