nginx повторяет попытку статических файлов один раз при ошибке 404

nginx повторяет попытку статических файлов один раз при ошибке 404

В моем тестовом сценарии, если файл создается и кто-то запрашивает файл, будет возвращена ошибка 404. Я хочу реализовать повторную попытку один раз для этого файла. Текущая конфигурация

location /file/ {
    root /var/www/html/;
    try_files $uri $uri/ @retry;
}
location @retry {
    proxy_pass http://127.0.0.1;
}

это отлично работает для создания и доступа к файлам в реальном времени (если файл возвращает 404, он как бы повторяет попытку). Но если файл не существует, он создает вложенные запросы (я полагаю), которые в конечном итоге вернут 503 gateway timeout.
1) Есть ли лучшая реализация для этого?
2) Будет ли вложенный запрос также завершен, когда истечет время ожидания первого запроса?

решение1

Просто продублируйте свой блок местоположения вместо проксирования на localhost.

location /file/ {
    root /var/www/html/;
    try_files $uri $uri/ @retry;
}

location @retry {
    root /var/www/html/;
    try_files $uri $uri/ =404;
}

Но учитывая, как быстро nginx обрабатывает запросы, эта повторная попытка для статического файла кажетсяДействительноСтранная идея. Вместо этого вам следует зафиксировать то, что вы задумали, в своем рабочем процессе.

Связанный контент