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:
[2001:250:1800:1:
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: