diff --git a/ChangeLog b/ChangeLog index d2b03072..fb3a342a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +v1.10.4 +-------------------------------------------------------------------------------- + * mod_proxy_http2: adding support for Reverse Proxy Request headers. + v1.10.3 -------------------------------------------------------------------------------- * fixed possible deadlock that could occur when connections were diff --git a/configure.ac b/configure.ac index 5cbf2cfa..b2e70072 100644 --- a/configure.ac +++ b/configure.ac @@ -14,7 +14,7 @@ # AC_PREREQ([2.69]) -AC_INIT([mod_http2], [1.10.3], [stefan.eissing@greenbytes.de]) +AC_INIT([mod_http2], [1.10.4], [stefan.eissing@greenbytes.de]) LT_PREREQ([2.2.6]) LT_INIT() diff --git a/mod_http2/h2_proxy_session.c b/mod_http2/h2_proxy_session.c index f2fed906..458a12a0 100644 --- a/mod_http2/h2_proxy_session.c +++ b/mod_http2/h2_proxy_session.c @@ -742,6 +742,32 @@ static apr_status_t open_stream(h2_proxy_session *session, const char *url, h2_proxy_req_make(stream->req, stream->pool, r->method, scheme, authority, path, r->headers_in); + if (dconf->add_forwarded_headers) { + if (PROXYREQ_REVERSE == r->proxyreq) { + const char *buf; + + /* Add X-Forwarded-For: so that the upstream has a chance to + * determine, where the original request came from. + */ + apr_table_mergen(stream->req->headers, "X-Forwarded-For", + r->useragent_ip); + + /* Add X-Forwarded-Host: so that upstream knows what the + * original request hostname was. + */ + if ((buf = apr_table_get(r->headers_in, "Host"))) { + apr_table_mergen(stream->req->headers, "X-Forwarded-Host", buf); + } + + /* Add X-Forwarded-Server: so that upstream knows what the + * name of this proxy server is (if there are more than one) + * XXX: This duplicates Via: - do we strictly need it? + */ + apr_table_mergen(stream->req->headers, "X-Forwarded-Server", + r->server->server_hostname); + } + } + /* Tuck away all already existing cookies */ stream->saves = apr_table_make(r->pool, 2); apr_table_do(add_header, stream->saves, r->headers_out, "Set-Cookie", NULL); diff --git a/mod_http2/h2_version.h b/mod_http2/h2_version.h index d6d8e79f..5332f5ec 100644 --- a/mod_http2/h2_version.h +++ b/mod_http2/h2_version.h @@ -26,7 +26,7 @@ * @macro * Version number of the http2 module as c string */ -#define MOD_HTTP2_VERSION "1.10.3-git" +#define MOD_HTTP2_VERSION "1.10.4-git" /** * @macro @@ -34,7 +34,7 @@ * release. This is a 24 bit number with 8 bits for major number, 8 bits * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. */ -#define MOD_HTTP2_VERSION_NUM 0x010a03 +#define MOD_HTTP2_VERSION_NUM 0x010a04 #endif /* mod_h2_h2_version_h */