Behavior of server depends on a file name

Igor Sysoev is at rambler-co.ru
Fri Sep 12 17:35:02 MSD 2008


On Fri, Sep 12, 2008 at 03:24:12PM +0200, Gregor Jurgele wrote:

> Dave, Igor, thank you both for your prompt replies.
> 
> Does a web server have to have a default site defined? The thing is, if I do

Yes, there is always default site for given IP:port. This site receives
all request wiht unknown "host" headers or request without the header.

By default the default site will first site with given IP:port.
You can overide this using

     server {
        listen  IP:PORT  default;

> not explicitly declare a default site and leave all my files as they are,
> meaning the included file is named www.bona-a.com (or www.bona-b.com ...
> www.bona-d.com), then the www.bona-a.com site becomes the default site. If I
> access f.e. mail.bona-a.com I receive the www.bona-a.com web page. But if I
> name the above file www.bona-e.com or www.bona.com, then suddenly there is
> no default site and I receive 403 Forbidden if I try to access f.e.
> mail.bona-a.com. So a change from letter a to e in a file name
> www.bona-a.com changes the behavior of the server from "default web site
> defined" to "default web site not defined".
> 
> Regards,
> 
> Gregor
> 
> On 9/12/08, Igor Sysoev <is at rambler-co.ru> wrote:
> >
> > On Fri, Sep 12, 2008 at 10:59:47AM +0200, Gregor Jurgele wrote:
> >
> > > I would like to run a few virtual sites on one IP on nginx 0.6.32
> > compiled
> > > from source as Debian package on Debian Etch.
> > >
> > > My nginx.conf contents are:
> > >
> > > user www-data;
> > > worker_processes  1;
> > >
> > > error_log  /var/log/nginx/error.log;
> > > pid        /var/run/nginx.pid;
> > >
> > > events {
> > >     worker_connections  1024;
> > > }
> > >
> > > http {
> > >     include       /etc/nginx/mime.types;
> > >     default_type  application/octet-stream;
> > >
> > >     access_log  /var/log/nginx/access.log;
> > >
> > >     sendfile        on;
> > >     #tcp_nopush     on;
> > >
> > >     #keepalive_timeout  0;
> > >     keepalive_timeout  65;
> > >     tcp_nodelay        on;
> > >
> > >     gzip  on;
> > >
> > >     server_tokens     off;
> > >
> > >     include /etc/nginx/conf.d/*.conf;
> > >     include /etc/nginx/sites-enabled/*;
> > > }
> > >
> > > My virtual site file (www.bona-a.com) contents are:
> > >
> > > server {
> > >         listen   80;
> > >         server_name  www.bona-a.com;
> > >
> > >         access_log  /var/log/nginx/www.bona-a.com.access.log;
> > >
> > >         location / {
> > >                 root   /var/www/www.bona-a.com;
> > >                 index  default.html default.htm index.html index.htm;
> > >         }
> > >
> > >         # pass the PHP scripts to FastCGI server listening on
> > 127.0.0.1:9000
> > >         #
> > >         #location ~ \.php$ {
> > >                 #fastcgi_pass   127.0.0.1:9000;
> > >                 #fastcgi_index  index.php;
> > >                 #fastcgi_param  SCRIPT_FILENAME
> > > /scripts$fastcgi_script_name;
> > >                 #includefastcgi_params;
> > >         #}
> > > }
> > >
> > > If I name a file or symbolic link in /etc/nginx/sites-enabled/, that
> > holds
> > > the information for a virtual site, www.bona-a.com, this site becomes a
> > > catch-all site, answering all requests that go to the same ip and do not
> > > match any of the sites defined in other files in
> > /etc/nginx/sites-enabled/.
> > >
> > > Same is if I replace -a with - followed by any letter between b and d
> > > (including). If I name the file www.bona-e.com or www.bona.com,
> > everything
> > > works fine and i get 403 Forbidden as a reply.
> > >
> > > What am I doing wrong?
> >
> >
> > nginx does not sort include'd files, so the best way is to define default
> > site before the include.
> >
> >
> >
> > --
> > Igor Sysoev
> > http://sysoev.ru/en/
> >
> >

-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list