J'ai du mal à configurer nginx comme proxy d'un point de terminaison public S3. Mon cas d'utilisation nécessite de modifier le code d'état de la réponse S3, tout en préservant la charge utile de réponse.Comment modifier le code d'état d'une réponse de serveur proxy dans nginx?
Les codes d'état possibles retournés par S3 comprennent 200 et 403. Pour mon cas d'utilisation, je dois cartographier les codes d'état à 503.
J'ai essayé les éléments suivants qui ne fonctionne pas:
location ~* ^/.* {
[...]
proxy_intercept_errors on;
error_page 200 =503 $upstream_http_location
}
Nginx génère l'erreur suivante:
nginx: [emerg] value "200" must be between 300 and 599 in /etc/nginx/nginx.conf:xx
Voici un extrait plus complet:
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;
}
}
Est-il possible de réaliser ce dont j'ai besoin avec nginx?
Juste ramener le serveur backend pour la maintenance, et vous obtiendrez votre erreur sans astuces. – AnrDaemon
Toutefois, les utilisateurs verront le message générique 503 par défaut de l'équilibreur de charge. Je dois retourner un message d'erreur personnalisé qui sera éventuellement configurable par des personnes non techniques de l'équipe. – Wenzil