aboutsummaryrefslogtreecommitdiff
path: root/src/http/ngx_http_upstream.c
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2013-05-27 16:54:09 +0400
committerMaxim Dounin <mdounin@mdounin.ru>2013-05-27 16:54:09 +0400
commit1a983a0c05594b55e95ebbda15611f0bc2930ec7 (patch)
tree15cefbb2d2ec06faf878541304a60bba4f31b1a3 /src/http/ngx_http_upstream.c
parentcc3c0ce87092d998682a20e597db0bf7d6dac009 (diff)
downloadnginx-1a983a0c05594b55e95ebbda15611f0bc2930ec7.tar.gz
nginx-1a983a0c05594b55e95ebbda15611f0bc2930ec7.zip
Upstream: http_403 support in proxy_next_upstream (and friends).
The parameter is mostly identical to http_404, and is expected to be used in similar situations. The 403 code might be returned by a backend instead of 404 on initial sync of new directories with rsync. See here for feature request and additional details: http://mailman.nginx.org/pipermail/nginx-ru/2013-April/050920.html
Diffstat (limited to 'src/http/ngx_http_upstream.c')
-rw-r--r--src/http/ngx_http_upstream.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index 85fc849e7..16e660245 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -369,6 +369,7 @@ static ngx_http_upstream_next_t ngx_http_upstream_next_errors[] = {
{ 502, NGX_HTTP_UPSTREAM_FT_HTTP_502 },
{ 503, NGX_HTTP_UPSTREAM_FT_HTTP_503 },
{ 504, NGX_HTTP_UPSTREAM_FT_HTTP_504 },
+ { 403, NGX_HTTP_UPSTREAM_FT_HTTP_403 },
{ 404, NGX_HTTP_UPSTREAM_FT_HTTP_404 },
{ 0, 0 }
};
@@ -3156,8 +3157,11 @@ ngx_http_upstream_next(ngx_http_request_t *r, ngx_http_upstream_t *u,
if (u->peer.sockaddr) {
- if (ft_type == NGX_HTTP_UPSTREAM_FT_HTTP_404) {
+ if (ft_type == NGX_HTTP_UPSTREAM_FT_HTTP_403
+ || ft_type == NGX_HTTP_UPSTREAM_FT_HTTP_404)
+ {
state = NGX_PEER_NEXT;
+
} else {
state = NGX_PEER_FAILED;
}
@@ -3189,6 +3193,10 @@ ngx_http_upstream_next(ngx_http_request_t *r, ngx_http_upstream_t *u,
status = NGX_HTTP_INTERNAL_SERVER_ERROR;
break;
+ case NGX_HTTP_UPSTREAM_FT_HTTP_403:
+ status = NGX_HTTP_FORBIDDEN;
+ break;
+
case NGX_HTTP_UPSTREAM_FT_HTTP_404:
status = NGX_HTTP_NOT_FOUND;
break;