On Sun, Oct 29, 2017 at 11:53:23AM +0100, basti wrote: Hi there,
> In this example from nginx docs domain has "fullname". > > server { > server_name ~^(www\.)?(*?<domain>*.+)$; > root /sites/*$domain*; > } When I use the config server { server_name ~^(www\.)?(?<domain>.+)$; return 200 "domain is $domain\n"; } I get the message nginx: [emerg] pcre_compile() failed: unrecognized character after (?< in "^(www\.)?(?<domain>.+)$" at "domain>.+)$" in /usr/local/nginx/conf/nginx.conf because my PCRE version does not recognise that syntax. The page at http://nginx.org/en/docs/http/server_names.html does say: """ The PCRE library supports named captures using the following syntax: ?<name> Perl 5.10 compatible syntax, supported since PCRE-7.0 ?'name' Perl 5.10 compatible syntax, supported since PCRE-7.0 ?P<name> Python compatible syntax, supported since PCRE-4.0 If nginx fails to start and displays the error message: pcre_compile() failed: unrecognized character after (?< in ... this means that the PCRE library is old and the syntax “?P<name>” should be tried instead. """ When I change the main line (by adding an extra P) to be server_name ~^(www\.)?(?P<domain>.+)$; then it all seems to work for me: $ curl -H Host:www.example.com http://localhost/ domain is example.com $ curl -H Host:example.com http://localhost/ domain is example.com $ curl -H Host:no.example.com http://localhost/ domain is no.example.com > servername: www.example.com -> $domain should be example.com It works for me. What output do you get instead of what you want to get? f -- Francis Daly fran...@daoine.org _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx