Nginx Rewrite 实现匹配泛域名规则

Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。 Igor 将源代码以类 BSD 许可证的形式发布 1、为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions).

此例说明:

访问域名:http://sanya.ahunsha.com rewrite: http://www.ahunsha.com/muban1.php?ename=sanya

http://shanghai.ahunsha.com rewrite: http://www.ahunsha.com/muban1.php?ename=shanghai

此处只是举2个例子,因为以后要涉及到很多城市站点,不能一一罗列,所以希望重写的规则能兼容到后期城市的增加

server {

listen 80;

server_name *.ahunsha.com;

index index.html index.htm index.php;

root /alidata/www/ahunsha;

location ~ .*\.(php|php5)?$

{

#fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires 30d;

}

location ~ .*\.(js|css)?$

{

expires 1h;

}

rewrite_log on;

error_log logs/rewrite.error.log notice;

# 泛域名开始配置

if ( $host ~* (.*)\.(.*)\.(.*) ) {

set $domain $1; #获取当前的 域名前缀

}

if ( $domain !~* ^www$ ) {

rewrite ^/$ /muban1.php?ename=$domain last;

}

}