Mercurial > hg > nginx
changeset 864:7521e5f5d555
use host part in URL
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 23 Nov 2006 20:20:23 +0000 |
parents | 57cb2052dcc6 |
children | 797b54c6425b |
files | src/http/ngx_http_parse.c src/http/ngx_http_request.c src/http/ngx_http_variables.c |
diffstat | 3 files changed, 22 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_parse.c Wed Nov 22 16:20:21 2006 +0000 +++ b/src/http/ngx_http_parse.c Thu Nov 23 20:20:23 2006 +0000 @@ -260,7 +260,7 @@ case sw_schema_slash_slash: switch (ch) { case '/': - r->host_start = p; + r->host_start = p + 1; state = sw_host; break; default:
--- a/src/http/ngx_http_request.c Wed Nov 22 16:20:21 2006 +0000 +++ b/src/http/ngx_http_request.c Thu Nov 23 20:20:23 2006 +0000 @@ -1385,8 +1385,15 @@ ngx_http_core_loc_conf_t *clcf; ngx_http_core_srv_conf_t *cscf; - host = r->headers_in.host->value.data; - len = r->headers_in.host_name_len; + host = r->host_start; + + if (host == NULL) { + host = r->headers_in.host->value.data; + len = r->headers_in.host_name_len; + + } else { + len = r->host_end - host; + } if (vn->hash.buckets) { cscf = ngx_hash_find(&vn->hash, hash, host, len);
--- a/src/http/ngx_http_variables.c Wed Nov 22 16:20:21 2006 +0000 +++ b/src/http/ngx_http_variables.c Thu Nov 23 20:20:23 2006 +0000 @@ -667,13 +667,20 @@ ngx_http_variable_host(ngx_http_request_t *r, ngx_http_variable_value_t *v, uintptr_t data) { - if (r->headers_in.host) { - v->len = r->headers_in.host_name_len; - v->data = r->headers_in.host->value.data; + if (r->host_start == NULL) { + + if (r->headers_in.host) { + v->len = r->headers_in.host_name_len; + v->data = r->headers_in.host->value.data; + + } else { + v->len = r->server_name.len; + v->data = r->server_name.data; + } } else { - v->len = r->server_name.len; - v->data = r->server_name.data; + v->len = r->host_end - r->host_start; + v->data = r->host_start; } v->valid = 1;