Forum: NGINX Virtualhosts and map

Posted by Varix (Guest)
on 2013-02-26 10:32
(Received via mailing list)
What is the best way to configure virtualhost with map?

Varix

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,236611,236611#msg-236611
Posted by Jonathan Matthews (Guest)
on 2013-02-26 14:53
(Received via mailing list)
On 26 February 2013 09:31, Varix <nginx-forum@nginx.us> wrote:
> What is the best way to configure virtualhost with map?

The question you have asked is very wide-ranging yet vague.
The only answer I can give you is "it depends on what you're trying to 
achieve".

I suggest you formulate a better question.

If you include details of the things that you have tried already, this
will serve as a good indicator to people on the list that you're not
just being lazy, can't be bothered to google, or want people to do
your job for you.

HTH,
Jonathan
--
Jonathan Matthews // Oxford, London, UK
http://www.jpluscplusm.com/contact.html
Posted by Varix (Guest)
on 2013-02-27 12:40
(Received via mailing list)
Hallo Jonathan,

I have some proplems with the english language. This is bad in the IT
section.

My problem is, i can't find an complett example to do that for 
education.
All I find is
the "old Way" with sites-availbled and sites-enabled, what I have done 
for
years.

In January I chance nginx to the new version.

My files in the folder sites-availabled
default
example1.com
example2.com
example3.com


My default file

# default server
#

server {
    listen       80 default_server;
    server_name  _;
    access_log logs/default/default.access.log;
    error_log logs/default/default.error.log;

    root /www/default;

    location / {
        root   /www/default;
        index  index.html index.htm;
    }

    location /i/ {
         alias /www/123/;
        }

    # redirect server error pages to the static page /40x.html
    #

    error_page 400 401 402 403 404  /40x.html;
    location = /40x.html {
         root  /www/default/html;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /www/default/html;
    }


If the IP (xxx.xxx.xxx.xxx) is type in the browser, it shows only domain
example1.com.

After a few days I found the reason for this:

Change: now if the "include" directive with mask is used on Unix
             systems, included files are sorted in alphabetical order.


My solution for this is to make a new big nginx.conf
In the part with the serverblocks the latest is the default one and all 
is
OK.
This solution is OK for a few domains, but not for many domains.
I read that this can be done with map. But I can't find an example for
this.

Now I am looking for examples how I can do that with map.

This from the nginx docu is not enough for me.

map $http_host $name {
    hostnames;

    default       0;

    example.com   1;
    *.example.com 1;
    example.org   2;
    *.example.org 2;
    .example.net  3;
    wap.*         4;
}

Varix

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,236611,236669#msg-236669
Posted by Maxim Dounin (Guest)
on 2013-02-27 14:04
(Received via mailing list)
Hello!

On Wed, Feb 27, 2013 at 06:40:27AM -0500, Varix wrote:

> In January I chance nginx to the new version.
> # default server
>     location / {
>
>     }
>
>
> If the IP (xxx.xxx.xxx.xxx) is type in the browser, it shows only domain
> example1.com.
>
> After a few days I found the reason for this:
>
> Change: now if the "include" directive with mask is used on Unix
>              systems, included files are sorted in alphabetical order.

This can't be a reason as long as you have "default_server"
parameter of the "listen" directive properly set for listen
sockets used.

>
>     wap.*         4;
> }

Maps may be used to handle multiple domains in one server block,
e.g. to set document root depending on a domain:

    map $host $server_root {
        hostnames;

        default           /www/default;
        foo.example.com   /www/foo;
        foo.example.org   /www/foo;
        bar.example.com   /www/bar;
    }

    server {
        listen 80;
        server_name foo.example.com foo.example.org bar.example.com ...;

        root $server_root;

        ...
    }

This aproach may be usable if you have mostly identical handling
for many domains, with some minor differences which can be handled
using variables.  It only makes sense if you have really many
domains (thousands of), and can't afford distinct server{} blocks
for them.

--
Maxim Dounin
http://nginx.com/support.html
Posted by Varix (Guest)
on 2013-02-27 16:43
(Received via mailing list)
Hallo Maxim Dounin,

thanks for your answer. It helps me.

>This can't be a reason as long as you have "default_server"
>parameter of the "listen" directive properly set for listen
>sockets used.

My thought was, the default file is the first alphabetical file
in the folder. And the next domainfile namend with do*.*.
As I make the big nginx.conf for the first time I had the same problem.
I had the default at the first serverblock. Then I write this 
serverblock
to the end of the serverblocks and all was OK. This alphabetical sort
managed something in a other way, I thought.

I will test same things in the next days. Thanks

Varix

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,236611,236677#msg-236677
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.