在我的測試場景中,如果正在建立文件並且有人要求文件,則將返回 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 處理請求的速度,靜態檔案的重試似乎是一個問題真的奇怪的想法。相反,您應該在工作流程中修復您想要的內容。