Nginx vhost configuration
- by user101494
I am attempting to setup a new server with Nginx 1.0.10 on debian 6. The config below works perfectly on a server with nginx 0.8.36 on Ubuntu 10.04.3 but not on the new box.
The desired result is to:
Redirect non-www request on the tld to www, but not not subdomains
Use the the folder structure
/var/www/[domain]/htdocs
/var/www/[domain]/subdomains/[subdomain]/htdocs
Serve files any host for which files exist in this structure
On the new server domains are matching correctly but subdomains are matching to /var/www/[subdomain].[domain]/htdocs not /var/www/[domain]/subdomains/[subdomain]/htdocs
server {
listen 80;
server_name _________ ~^[^.]+\.[^.]+$;
rewrite ^(.*)$ $scheme://www.$host$1 permanent;
}
server {
listen 80;
server_name _ ~^www\.(?<domain>.+)$;
server_name_in_redirect off;
location / {
root /var/www/$domain/htdocs;
index index.html index.htm index.php;
fastcgi_index index.php;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
keepalive_timeout 0;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
server {
listen 80;
server_name __ ~^(?<subdomain>\.)?(?<domain>.+)$$;
server_name_in_redirect off;
location / {
root /var/www/$domain/subdomains/$subdomain/htdocs;
index index.html index.htm index.php;
fastcgi_index index.php;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
keepalive_timeout 0;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}