server_name that starts with a number

Maxim Dounin mdounin at mdounin.ru
Tue Sep 26 14:15:28 UTC 2017


Hello!

On Tue, Sep 26, 2017 at 02:42:41PM +0200, rainer at ultra-secure.de wrote:

> I have a website that has a server_name that starts with a number (or 
> two numbers, actually).
> 
> I also have a catchall default_server configured with the server_name 
> "_".
> 
> Now, it seems when the server_name starts with a number, it's ignored 
> and requests are routed to the default server.

Just a quick test, with the only the following server{} blocks in 
the http{} section:

    server {
        listen 8080;
        server_name _;
        return 200 $server_name\n;
    }

    server {
        listen 8080;
        server_name 12test.example.com;
        return 200 $server_name\n;
    }

Testing it with curl:

$ curl -H 'Host: foo.example.com' http://127.0.0.1:8080/
_
$ curl -H 'Host: 12test.example.com' http://127.0.0.1:8080/
12test.example.com

So clearly it selects correct server based on the name provided in 
the request, even when there are names starting with a number.

> Can someone explain this?
> 
> How do I fix this?

Most likely explanations are, in no particular order:

- you've configured it wrong;
- you are testing it wrong.

To find out what exactly happened and how to fix this, please 
provide the following:

- full yet minimal configuration you are able to reproduce the 
  behaviour in question (providing "nginx -T" output might be a 
  good idea);

- steps you use to test things.

Note well that testing with browsers is generally a bad idea, as 
browsers tend to cache responses.

-- 
Maxim Dounin
http://nginx.org/


More information about the nginx mailing list