A bug when Host header contain IPv6 address

speedfirst nginx-forum at nginx.us
Wed Aug 31 07:37:28 UTC 2011

For a request with an IPv6 Host header like:

Host: Host: [2001:250:1800:1::88]

The function "ngx_http_validate_host" will consider the trailing ":88]"
as a port number and trim it. Therefore the value of
"r->headers_in.server" and "$host" will become:


Test (in Nginx - 1.1.1):
    Test config:

     listen [::]:80
     location / {
           add_header MYHEADER $host;
           return 200;

    Test input:
telnet 2001:250:1800:1::88
Trying 2001:250:1800:1::88...
Connected to 2001:250:1800:1::88.
Escape character is '^]'.
GET / HTTP/1.0
Host: [2001:250:1800:1::88]

    Test output:
HTTP/1.1 200 OK
Server: nginx/1.0.3
Date: Wed, 24 Aug 2011 12:11:07 GMT
Content-Type: application/octet-stream
Content-Length: 0
Connection: close
MYHEADER: [2001:250:1800:1:

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,214541,214541#msg-214541

More information about the nginx mailing list