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;
}
}