Hi,

I'm running the 2016-11-11 amd64 snapshot on a VMWare test host,
working with patterns in httpd's server statements. Here's my
/etc/httpd.conf:

--
public_ip="*"
public_ip6="::"

server "default" {
        root "/default"
        listen on $public_ip port 80
        listen on $public_ip6 port 80
}

server match "^[w]+%.mwlucas%.org$" {
        listen on $public_ip port www
        listen on $public_ip6 port 80
        root "/www1"
        directory auto index
}
--

My understanding of what this should do is:

Requests that match one or more 'w's.mwlucas.org (i.e.,
www.mwlucas.org, w.mwlucas.org, wwwwww.mwlucas.org, etc) should hit
the server with the match statement.

Other requests to the server, such as by raw IP, a plain
"mwlucas.org," or any other hostname pointed at that IP address,
should get the default entry.

Each site only contains a single document, giving the site name in
large letters.

Instead, it seems that every request hits the match statement.

Running the server in debug mode:

# httpd -dvvvvvvv
startup
server_privinit: adding server default
socket_rlimit: max open files 1024
socket_rlimit: max open files 1024
socket_rlimit: max open files 1024
server_privinit: adding server default
server_privinit: adding server ^[w]+%.mwlucas%.org$
server_privinit: adding server ^[w]+%.mwlucas%.org$
server_launch: configuring server default
server_launch: running server default
server_launch: configuring server default
server_launch: running server default
server_launch: configuring server default
server_launch: running server default
server_launch: configuring server default
server_launch: running server default
server_launch: configuring server default
server_launch: running server default
server_launch: configuring server default
server_launch: running server default


Lynx on another workstation. Requesting www.mwlucas.org works as expected:

^[w]+%.mwlucas%.org$ 203.0.113.208 - - [11/Nov/2016:16:35:00 -0500] "GET / 
HTTP/1.0" 200 51
server default, client 1 (1 active), 203.0.113.208:15679 -> 192.0.2.101, done

Let's try plain mwlucas.org. That doesn't have any leading w or the
explicit period, I'd expect it to hit the default server.

^[w]+%.mwlucas%.org$ 203.0.113.208 - - [11/Nov/2016:16:37:34 -0500] "GET / 
HTTP/1.0" 200 51
server default, client 1 (1 active), 203.0.113.208:62794 -> 192.0.2.101, done

Something without any host name in it: browse by IP:

^[w]+%.mwlucas%.org$ 203.0.113.208 - - [11/Nov/2016:16:38:13 -0500] "GET / 
HTTP/1.0" 200 51
server default, client 1 (1 active), 203.0.113.208:61442 -> 192.0.2.101, done

It seems that no matter how I get to this host, I get the server with
the match statement.

I've tried variants on the pattern. It seems that a simpler pattern
should work, like:

server match "w+.mwlucas.org" {

but it seems all requests still go to the match statement server.

If I remove the match statement from httpd.conf and rely on something like

server www.mwlucas.org {

requests go to either the default server or, if I specifically request
that hostname, the named server.

Any suggestions? What am I missing to use patterns in a server entry?

Thanks,
==ml

-- 
Michael W. Lucas  -  mwlu...@michaelwlucas.com, Twitter @mwlauthor 
http://www.MichaelWLucas.com/, http://blather.MichaelWLucas.com/

Reply via email to