feature: added the balancer_status_code patch to the nginx core to allow returning arbitrary HTTP status codes inside upstream balancers.

Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
This commit is contained in:
Datong Sun 2017-06-23 19:02:26 -07:00 committed by Yichun Zhang (agentzh)
parent b1400169a7
commit 3b74625ad3
2 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,27 @@
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index 0f6b3ae..56d44fc 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -1368,6 +1368,11 @@ ngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u)
return;
}
+ if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
+ ngx_http_upstream_finalize_request(r, u, rc);
+ return;
+ }
+
u->state->peer = u->peer.name;
if (rc == NGX_BUSY) {
diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h
index b288f28..9b60e12 100644
--- a/src/http/ngx_http_upstream.h
+++ b/src/http/ngx_http_upstream.h
@@ -418,5 +418,6 @@ extern ngx_module_t ngx_http_upstream_module;
extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[];
extern ngx_conf_bitmask_t ngx_http_upstream_ignore_headers_masks[];
+#define HAVE_BALANCER_STATUS_CODE_PATCH
#endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */

View File

@ -55,6 +55,13 @@ else
fi
fi
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
if [ "$answer" = "Y" ]; then
echo "$info_txt applying the balancer_status_code patch"
patch -p1 < $root/patches/nginx-$main_ver-balancer_status_code.patch || exit 1
echo
fi
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
if [ "$answer" = "Y" ]; then
echo "$info_txt applying the builtin_error_page_footer patch"