Mass virtual hosting and global redirect

NoSync nginx-forum at nginx.us
Tue Jun 16 19:06:37 MSD 2009


This is the whole conf:

nginx.conf:

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;
	tcp_nodelay		off;
	keepalive_timeout	3;

	gzip			on;
	gzip_comp_level		1;
	gzip_proxied		any;
	gzip_min_length		1024;
	gzip_types		text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

and this is the enabled server file:

server {
	listen 80;
	server_name ~^[^.]+\.[^.]+$; # domain.com
	rewrite ^ http://www.$host$request_uri?;
}

server {
	listen			80 default;
	server_name ~^(.*)\.(.*\..*)$;
	set $sub $1;
	set $domain $2;	
	root			/var/www/vhosts/$domain/$sub;
	access_log 		/var/log/nginx/access.log combined;
	error_log		/var/log/nginx/error.log error;

	include /etc/nginx/conf/wordpress_params;

  location / {
	root	/var/www/vhosts/$domain/$sub;
	index	index.php index.html;

	if (-f $request_filename) {
		expires 30d;
		break;
	}

	if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?q=$1 last;
                break;
	}
}

location ~* i.+\.(css|js|jpg|jpeg|gif|png)$ {
	expires      7d;
}

location ~ "^(.+\.php)($|/)" {
        include         /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
}

   location ~ /\.ht {
    deny  all;
  }
}

and here's the wordpress_params file which is also included:

if (-f $request_filename) {
break;
}

set $supercache_file '';

set $supercache_uri $request_uri;

if ($request_method = POST) {
set $supercache_uri '';
}

# Using pretty permalinks, so bypass the cache for any query string
if ($query_string) {
set $supercache_uri '';
}

if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
set $supercache_uri '';
}

# if we have not bypassed the cache, specify our supercache file
if ($supercache_uri ~ ^(.+)$) {
set $supercache_file /wp-content/cache/supercache/$http_host/$1index.html;
}

# only rewrite to the supercache file if it actually exists
if (-f $document_root$supercache_file) {
rewrite ^(.*)$ $supercache_file break;
}

# all other requests go to Wordpress
if (!-e $request_filename) {
rewrite . /index.php last;
}

Unfortunately I can't recompile and install with debug flags right now as this is a production server. :-/

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,2924,2963#msg-2963






More information about the nginx mailing list