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 網關逾時。
1)有沒有更好的實現?
2)當第一個請求逾時時,巢狀請求也會終止嗎?

答案1

只需複製您的位置區塊,而不是代理到本機。

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

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

但考慮到 nginx 處理請求的速度,靜態檔案的重試似乎是一個問題真的奇怪的想法。相反,您應該在工作流程中修復您想要的內容。

相關內容