我想重新映射Nginx生成的502和504錯誤,當它無法成功地將代理與408錯誤進行通信時。將proxy_pass中的Nginx 502/504錯誤重新映射到408錯誤
很明顯,當Nginx返回502/504並且沒有主體時,它應該返回408而不是主體。
我嘗試添加該指令,但它顯然破壞了響應頭:
error_page 502 =408;
error_page 504 =408;
任何想法如何做重新映射Nginx上的錯誤代碼?
我想重新映射Nginx生成的502和504錯誤,當它無法成功地將代理與408錯誤進行通信時。將proxy_pass中的Nginx 502/504錯誤重新映射到408錯誤
很明顯,當Nginx返回502/504並且沒有主體時,它應該返回408而不是主體。
我嘗試添加該指令,但它顯然破壞了響應頭:
error_page 502 =408;
error_page 504 =408;
任何想法如何做重新映射Nginx上的錯誤代碼?
語法:
error_page
代碼... [= [響應]] URI;
你忘了指定uri
參數(您=408
的說法已經解釋爲URI)。
UPD:
location/{
error_page 502 504 =408 @empty;
}
location @empty {
return 200 '';
}
從Is it possible to change the HTTP status code returned when proxy_pass gateway is down in nginx?獲取靈感,這組指令似乎工作:
location =/{
return 200;
}
location ~ ^[a-z/[email protected]]*$ {
error_page 502 504 =408 /;
(proxy configuration goes here)
}
的URI的其他值都沒有但是。
奇怪的是,Nginx接受解析沒有uri部分的配置。無論如何,我沒有任何頁面重定向到,我只是想重新映射一個錯誤代碼,所以我想error_page不是正確的方式? – Pol
由於代碼參數是可選的,因此Nginx無法知道是否是'= 408' URI。即使頁面爲空,您也必須指定一個包含錯誤的頁面。我已經更新了我的答案。 – VBart