diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2005-03-01 15:20:36 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2005-03-01 15:20:36 +0000 |
| commit | 11d753231beaec58401160a5dd6eb51e92e90b86 (patch) | |
| tree | d8c58d101c7a3b9a0c346c5a87c697941b08c4e1 /src/http/modules/proxy | |
| parent | 2cc93887121b3a755ad594efc27c590d54315374 (diff) | |
| download | nginx-11d753231beaec58401160a5dd6eb51e92e90b86.tar.gz nginx-11d753231beaec58401160a5dd6eb51e92e90b86.tar.bz2 | |
nginx-0.1.23-RELEASE importrelease-0.1.23
*) Feature: the ngx_http_ssi_filter_module and the ssi,
ssi_silent_errors, and ssi_min_file_chunk directives. The 'echo
var="HTTP_..." default=""' and 'echo var="REMOTE_ADDR"' commands are
supported.
*) Feature: the %request_time log parameter.
*) Feature: if the request has no the "Host" header line, then the
"proxy_preserve_host" directive set this header line to the first
server name of the "server_name" directive.
*) Bugfix: nginx could not be built on platforms different from i386,
amd64, sparc, and ppc; the bug had appeared in 0.1.22.
*) Bugfix: the ngx_http_autoindex_module now shows the information not
about the symlink, but about file or directory it points to.
*) Bugfix: the %apache_length parameter logged the negative length of
the response header if the no response was transferred to a client.
Diffstat (limited to 'src/http/modules/proxy')
| -rw-r--r-- | src/http/modules/proxy/ngx_http_proxy_upstream.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/http/modules/proxy/ngx_http_proxy_upstream.c b/src/http/modules/proxy/ngx_http_proxy_upstream.c index e2fe01554..e35433b08 100644 --- a/src/http/modules/proxy/ngx_http_proxy_upstream.c +++ b/src/http/modules/proxy/ngx_http_proxy_upstream.c @@ -145,10 +145,18 @@ static ngx_chain_t *ngx_http_proxy_create_request(ngx_http_proxy_ctx_t *p) } - if (p->lcf->preserve_host && r->headers_in.host) { - len += sizeof(host_header) - 1 - + r->headers_in.host_name_len + sizeof(":") - 1 + uc->port_text.len - + sizeof(CRLF) - 1; + if (p->lcf->preserve_host) { + if (r->headers_in.host) { + len += sizeof(host_header) - 1 + + r->headers_in.host_name_len + sizeof(":") - 1 + + uc->port_text.len + sizeof(CRLF) - 1; + + } else { + len += sizeof(host_header) - 1 + + r->server_name.len + sizeof(":") - 1 + + uc->port_text.len + sizeof(CRLF) - 1; + } + } else { len += sizeof(host_header) - 1 + uc->host_header.len + sizeof(CRLF) - 1; @@ -278,9 +286,14 @@ static ngx_chain_t *ngx_http_proxy_create_request(ngx_http_proxy_ctx_t *p) b->last = ngx_cpymem(b->last, host_header, sizeof(host_header) - 1); - if (p->lcf->preserve_host && r->headers_in.host) { - b->last = ngx_cpymem(b->last, r->headers_in.host->value.data, - r->headers_in.host_name_len); + if (p->lcf->preserve_host) { + if (r->headers_in.host) { + b->last = ngx_cpymem(b->last, r->headers_in.host->value.data, + r->headers_in.host_name_len); + } else { + b->last = ngx_cpymem(b->last, r->server_name.data, + r->server_name.len); + } if (!uc->default_port) { *b->last++ = ':'; |
