Hello
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?
Regards,
Gregor
The default site for a listener is the site marked
server {
listen 80 default;
}
if no servers are marked default then the first server defined (which
depends on the order that include /*.conf is evaluated) will be the
default server.
I get around this problem by defining a site called default.conf which
includes the listen 80 default; stanza.
Cheers
Dave
On Fri, Sep 12, 2008 at 10:59:47AM +0200, Gregor Jurgele wrote:
sendfile on;
include /etc/nginx/conf.d/*.conf;
#fastcgi_param SCRIPT_FILENAME
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.
On Fri, Sep 12, 2008 at 07:15:08PM +1000, Dave C. wrote:
I get around this problem by defining a site called default.conf which
includes the listen 80 default; stanza.
Yes, this is second way: use default in listen.
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;
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
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