Welcome! Log In Create A New Profile

Advanced

Re: Variable $1 is Empty

Maxim Dounin
October 14, 2010 08:54AM
Hello!

On Thu, Oct 14, 2010 at 05:56:34PM +0700, Indra Setiawan wrote:

> Hi everyone,
>
> This is my first time installing nginx. I install it on my Debian
> 5.0.3 VPS and use Debian's repository to install it (version: 0.6.32).
>
> I'm having problem with using regular expression at server_name.
> Here's my configuration:
>
> server {
> listen 80;
> server_name ~^(.+)\.mydomain\.com$;
> location / {
> root /home/$1/public_html;
> index index.html index.htm;
> }
> }
>
> When I hit myusername.mydomain.com, where
> /home/myusername/public_html/ is exist. It gives me a 404 error. And
> when I view the log file, seems like $1 is null or something.
>
> 2010/10/14 10:47:08 [error] 4924#0: *3 "/home//public_html/index.html"
> is not found (2: No such file or directory), client: 173.245.73.113,
> server: ~^(.+)\.mydomain\.com$, request: "GET / HTTP/1.1", host:
> "myusername.mydomain.com"
>
> Am I doing wrong?
> Any helps will be appreciated, thanks in advance.

Changes with nginx 0.7.44:

....
*) Bugfix: if there is the single server for given address:port pair,
then captures in regular expressions in a "server_name" directive
did not work.
....

Adding another server listening on the same socket should resolve
the issue, though I would recommend to upgrade. 0.6.* branch is
legacy and not supported, and you are using an old version from
this branch.

Additionally, it's *really bad* idea to use enumerated captures in
server_name. Things may be screwed up easily - it's enough to add
another regexp to config (e.g. regexp location) to break anything.

There are two possible safe aproaches:

1. Use named captures as available in nginx 0.8.25+.

server {
server_name ~^(P<name>.+)\.mydomain\.com$;
root /home/$name/public_html;
...
}

See http://nginx.org/en/docs/http/server_names.html for details.

2. For old versions - use server-level if, i.e.

server {
server_name *.mydomain.com;

set $name "";
if ($host ~ "^(.+)\.mydomain\.com$") {
set $name $1;
}

root /home/$name/public_html;

...
}

Maxim Dounin

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx
Subject Author Posted

Variable $1 is Empty

Indra Setiawan October 14, 2010 07:08AM

Re: Variable $1 is Empty

lhmwzy October 14, 2010 08:04AM

Re: Variable $1 is Empty

António P. P. Almeida October 14, 2010 08:46AM

Re: Variable $1 is Empty

Maxim Dounin October 14, 2010 08:54AM

Re: Variable $1 is Empty

Maxim Dounin October 14, 2010 09:00AM

Re: Variable $1 is Empty

Indra Setiawan October 14, 2010 12:22PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 297
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready