nginx configuration issues

Igor Sysoev is at rambler-co.ru
Wed Jun 17 21:24:36 MSD 2009


On Wed, Jun 17, 2009 at 05:44:19PM +0200, Joel Dahl wrote:

> Hi,
> 
> I've been looking at replacing apache with nginx for a while and today I 
> had some time over to play with the nginx configuration.  I have around ~40 
> websites and my goal is to set up nginx to handle more websites without me 
> needing to reconfigure anything (I would like to avoid creating a new 
> virtual host every time a new website needs to be created).  This is just a 
> test of course, and not anywhere near production.
> 
> My nginx.conf looks like this (don't hesitate to suggest improvements, this 
> is my first nginx.conf file after all):
> 
> user www www;
> 
> worker_processes 1;
> 
> pid /var/run/nginx.pid;
> error_log /var/log/nginx_error.log;
> 
> events {
>     worker_connections 1024;
> }
> 
> http {
>     include mime.types;
>     default_type application/octet-stream;
> 
>     log_format main '$remote_addr - $remote_user [$time_local] $request '
>                     '"$status" $body_bytes_sent "$http_referer" '
>                     '"$http_user_agent" "$http_x_forwarded_for"';
> 
>     sendfile on;
>     tcp_nopush on;
>     tcp_nodelay off;
>     keepalive_timeout 65;
> 
>     server_names_hash_bucket_size 128;
> 
>     gzip on;
> 
>     server {
>         listen 80;
>         server_name _;
> 
>         location / {
>             root /home/w/$host;
>             index index.php index.html index.htm;
>         }
> 
>         error_page 500 502 503 504 /50x.html;
>         location = /50x.html {
>             root /usr/local/etc/nginx/errorpages;
>         }
> 
>         error_page 404 /404.html;
>         location = /404.html {
>             root /usr/local/etc/nginx/errorpages;
>         }
> 
>         location ~ \.php$ {
>             fastcgi_pass 127.0.0.1:9000;
>             fastcgi_index index.php;
>             fastcgi_param SCRIPT_FILENAME /home/w/$host$fastcgi_script_name;
>             fastcgi_param QUERY_STRING $query_string;
>             fastcgi_param REQUEST_METHOD $request_method;
>             fastcgi_param CONTENT_TYPE $content_type;
>             fastcgi_param CONTENT_LENGTH $content_length;
>             fastcgi_intercept_errors on;
>         }
> 
>         location ~ /\.ht {
>             deny all;
>         }
>     }
> }
> 
> ...and at first it seemed to work.  If the directory /home/w/www.foo.com 
> exists, requests to www.foo.com works and I can see the website.  However, 
> if I try to access www.foo.com/bar I get a "can't find the domain 
> www.foo.com" type of error message in my browser.  Browsing to 
> www.foo.com/bar/ works however, and www.foo.com/bar/index.php also works.
> 
> What am I doing wrong? :)

Add

    server {
       server_name_in_redirect on;

otherwise nginx uses "_" as server name in redirect: "http://_/bar/".


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





More information about the nginx mailing list