nginx rewrite 实现二级域名跳转

nginx rewrite 能够简单实现二级域名跳转。下面为使用方法。

访问效果:
当访问 http://abc.test.com 跳转到 http://www.test.com/abc
浏览器地址会变www.test.com/abc
实现方法

server { 
        listen 80; 
        server_name www.test.com; 
        location / { 
                root /data/test; 
                index index.html; 
        } 
}
server { 
        listen 80; 
        server_name *.test.com; 
        if ( $http_host ~* "^(.*)\.test\.com$") { 
                set $domain $1; 
                rewrite ^(.*) http://www.test.com/$domain break; 
        } 
}

访问效果二
当访问http://abc.test.com跳转到http://www.test.com/abc/
这样配置浏览器的地址就会显示成http://abc.test.com
实现方法

server {
        listen 80; 
        server_name *.test.com; 
        root /usr/local/www; 
        #这是里可以加多个目录,如果不加目录,会无法访问到abc.test.com/目录下的文件,如图片目录/images
        location ~ ^/(test|images|styles)/ 
        { 
                proxy_redirect        off; 
                proxy_set_header    Hostwww.test.com; 
                proxy_pass      http://192.168.1.2:8080; 
        } 
        location / { 
                set $domain default; 
                if ( $http_host ~* "^(.*)\.test\.com$") { 
                        set $domain $1; 
                } 
                rewrite ^/(.*)    /$domain/$1 last; 
        } 
        access_log off;
}

获取二级域名并指向不同静态目录的方法

if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
    set $subdomain /$1;
}
location / {
    root /home/www/public_html$subdomain;
    index index.html index.php;
}

Leave a Comment