I was surprised that `server "default"` didn't act like I expected. In this
example I expected `test1` to get 200 and everything else to get 404 but
this is not the case. In this example server "test1" actually catches all:
localhost, test1, and test2 will get code 200.
/etc/hosts:
127.0.0.1 localhost test1 test2
/tmp/httpd.conf:
server "test1" {
listen on localhost port 8080
block return 200
}
server "default" {
listen on localhost port 8080
block return 404
}
httpd -df /tmp/httpd.conf &
ftp -o - http://localhost:8080/ #200
ftp -o - http://test1:8080/ #200
ftp -o - http://test2:8080/ #200
man httpd.conf says:
"Match the server name using shell globbing rules. This can be an explicit
name, www.example.com, or a name including wildcards, *.example.com."
There is no mention as to what `server "default"` does even though it is
used several times in the man page. I find the behaviour to be odd
for it not to be documented. It isn't until I change the line to `server
"*"` when it starts doing what I expected:
ftp -o- http://localhost:8080/ #404
ftp -o- http://test1:8080/ #200
ftp -o- http://test2:8080/ #404
This is a gotcha in general. I would think the examples should use server
"*" instead and document what server "default" actually does.
and while we are here. Why does running httpd as a user say:
httpd: need root privileges
does it...?
-alfred