Nginx代理的上游服務(wù)返回的301是越、302等重定向請求,直接在服務(wù)器端(Nginx)端進(jìn)行處理染坯,不將重定向信息返回給客戶端均芽。客戶端不感知重定向請求单鹿。
Nginx 提供了內(nèi)置變量 “$upstream_http_< 響應(yīng)頭字段名>” 可獲取響應(yīng)頭字段屬性值
@error_page 是內(nèi)部循環(huán)骡技,最大循環(huán)次數(shù)為 10 次。
server {
listen 8888;
resolver 114.114.114.114 valid=30s;
# Nginx處理狀態(tài)碼大于300的響應(yīng)結(jié)果
proxy_intercept_errors on;
# 啟用多級錯誤跳轉(zhuǎn)
recursive_error_pages on;
location ~ /proxy {
proxy_pass http://backend;
error_page 301 302 307 308 = @error_page_302;
}
location @error_page_302 {
set $new_redirect_location '$upstream_http_location';
proxy_pass $new_redirect_location;
# 支持多層3XX跳轉(zhuǎn)
error_page 301 302 307 = @error_page_302;
}
}