An error with the docs of $host

Ruslan Ermilov ru at nginx.com
Fri Nov 30 10:36:07 UTC 2012


On Fri, Nov 30, 2012 at 06:05:42PM +0800, 姚伟斌 wrote:
> Hi Ruslan,
> 
> Most of the content is fine for me. Could you add a line like that the
> variable $host exclude the port explicitly? I know the host should mean the
> server name, not include the port.

: GET http://example.com:12345/uri HTTP/1.1
: Host: example.net:54321

results in $host being set to "example.com", while

: GET /uri HTTP/1.1
: Host: example.net:54321

results in $host being set to "example.net", as required by
http://tools.ietf.org/html/rfc2616#section-5.2

If I say about port stripping in case #2, should I say about
requestURI stripping to extract the "host" part?  I'd like
to avoid detailing it too much, and in my opinion "host from
the ..." fits both cases.

> It just confuses me when I use the
> directive like this:
> 
> proxy_set_header Host $host;
> 
> But the port is missing.

That is understood.  The previous description was incorrect.
Thanks for noticing.

> Maybe I shoud use the $http_host instead.

It depends on what you need.

> 2012/11/30 Ruslan Ermilov <ru at nginx.com>
[...]
> > How's this instead?
> >
> > %%%
> > Index: xml/en/docs/http/ngx_http_core_module.xml
> > ===================================================================
> > --- xml/en/docs/http/ngx_http_core_module.xml   (revision 775)
> > +++ xml/en/docs/http/ngx_http_core_module.xml   (working copy)
> > @@ -2754,8 +2754,10 @@
> >
> >  <tag-name id="var_host"><var>$host</var></tag-name>
> >  <tag-desc>
> > -<header>Host</header> request header field,
> > -or the server name matching a request if this field is not present
> > +in this order of precedence:
> > +host from the request line, or
> > +host from the <header>Host</header> request header field,
> > +or the server name matching a request
> >  </tag-desc>
> >
> >  <tag-name id="var_hostname"><var>$hostname</var></tag-name>
> > %%%



More information about the nginx mailing list