我很難配置nginx作爲公共S3端點的代理。我的用例需要更改S3響應的狀態代碼,同時保留響應負載。如何在nginx中更改代理服務器響應的狀態碼?
通過S3可能返回的狀態碼包括200和403對我的使用情況下,我需要將這些狀態代碼映射到503
我試圖不工作的情況如下:
location ~* ^/.* {
[...]
proxy_intercept_errors on;
error_page 200 =503 $upstream_http_location
}
Nginx的輸出下列錯誤:
nginx: [emerg] value "200" must be between 300 and 599 in /etc/nginx/nginx.conf:xx
下面是一個更完整的片段:
server {
listen 80;
location ~* ^/.* {
proxy_http_version 1.1;
proxy_method GET;
proxy_pass http://my-s3-bucket-endpoint;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header Connection "";
proxy_set_header Host my-s3-bucket-endpoint;
proxy_set_header Authorization '';
proxy_hide_header x-amz-id-2;
proxy_hide_header x-amz-request-id;
proxy_hide_header Set-Cookie;
proxy_ignore_headers "Set-Cookie";
proxy_cache S3_CACHE;
proxy_cache_valid 200 403 503 1h;
proxy_cache_bypass $http_cache_purge;
add_header X-Cached $upstream_cache_status;
proxy_intercept_errors on;
error_page 200 =503 $upstream_http_location;
}
}
是否有可能通過nginx實現我所需要的?
只需將後端服務器關閉以進行維護,並且您將無任何技巧地得到您的錯誤。 – AnrDaemon
但是,用戶將看到負載均衡器的默認通用503消息。我需要返回一個自定義錯誤消息,最終可以由團隊中的非技術人員配置。 – Wenzil