oinume journal

Scratchpad of what I learned

First loaded configuration becomes default_server in nginx

How nginx processes a request

server {
    listen      80;
    server_name example.org www.example.org;
    ...
}

server {
    listen      80;
    server_name example.net www.example.net;
    ...
}

server {
    listen      80;
    server_name example.com www.example.com;
    ...
}
In this configuration nginx tests only the request’s header field “Host” to determine which server the request should be routed to. If its value does not match any server name, or the request does not contain this header field at all, then nginx will route the request to the default server for this port. In the configuration above, the default server is the first one — which is nginx’s standard default behaviour.

I didn't know this behaviour and I should always add default_server to prevent someone from misunderstanding like this.

server {
    listen      80 default_server;
    server_name _;
}