Nginx关于个性二级域名的配置

在很多地方,比如说博客网站。我们经常可以会通过网站提供的配置功能,实现个性化的属于个人的二级域名,比如说http://cevin15.oschina.net。当然,OSC的博客目前还没有这个功能。

最近遇到个差不多的需求,网上看了下别人的实现方式,写得不太清楚,自己第一遍即使看懂了,回头看第二遍估计还是不懂。还是要自己测试下,然后记录记录。于是玩了下本地的Nginx,研究怎么去实现这种个性二级域名。

第一时间想到的是通过Nginx的rewrite来实现。配置如下:

server {
        listen       80;
        server_name  *.mydomain.com;
        if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
            set $subdomain $1;
        }
        location / {
            rewrite ^/$ http://www.mydomain.com/$subdomain last;
        }
    }

其中的if,是用于获取二级域名的变量值。

重载Nginx的配置,测试。发现跳转是正常了,但是浏览器的url也跟着变成:http://www.mydomain.com/$subdomain。

这样就没用了,起不到我们需求的酷酷的二级域名功能。

浏览器的url会发生变化的原因是,我们在使用rewrite时,使用了全路径的配置。

既然下面这种写法不行:

rewrite ^/$ http://www.mydomain.com/$subdomain last;

那就换回来这种写法:

rewrite ^/$ /$subdomain last;

再加上nginx的反向代理功能:

proxy_pass http://www.mydomain.com/;

就可以实现很酷的二级域名功能了。

全部配置如下:

server {
        listen       80;
        server_name  *.mydomain.com;
        if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
            set $subdomain $1;
        }
        location / {
            rewrite ^/$ /$subdomain last;
            proxy_pass http://www.mydomain.com/;
        }
    }

这是目前想到的二级域名实现方式,想法其实很简单,缺陷当然也有,就是在rewrite上面。如果url有多种路径规则,则需要一一进行配置。

如果以后有更好的实现方式,再来更新。待续……

时间: 2024-10-25 03:24:26

Nginx关于个性二级域名的配置的相关文章

Nginx 二级域名入门配置

要解决的问题 一个域名,如果只挂一个站点有点浪费,希望可以 aa.hostname.com -> localhost:8000 bb.hostname.com -> localhost:8001 思路 在 /etc/hosts 底下加入对hostname.com, aa.hostname.com, bb.hostname.com的解析. 二级域名的本质是用proxy_pass来实现的,路径的match导致请求重定向到proxy_pass的地方 方案 这是一个完整的/etc/nginx/ngin

Nginx 泛解析配置请求映射到多端口实现二级域名访问

由于想实现一个域名放置多个应用运行的目的,而不想通过域名后加端口号方式处理,这种方式处理记起来太麻烦,偷懒党简直不能忍,故而考虑了使用二级域名来处理多个应用同时运行.Google了一番资料并进行了尝试后,进行了总结. 文章开始之前先来理解一下二级域名的概念. 二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称:在国家顶级域名下,它是表示注册企业类别的符号.我国在国际互联网络信息中心(Inter NIC) 正式注册并运行的顶级域名是CN,这也是我国的一级域名.在顶级域名之

Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写

最常见的: 静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent; 反过来: 带参数的动态地址重定向到静态地址 if ($query_string ~* id=(.*)) { set $id $1; rewrite "^(.*)/article.asp$" $1/article/$id.htm last; } 泛域名解析 view plaincopy

django 项目部署在 Apache 后, 设置二级域名

上一篇文章简单说了怎么把django的项目部署到Apache上. 现在想弄个二级域名,也就是我原来有个域名 www.mysite.com,现在我想弄个 bbs.mysite.com ,该怎么做呢. 要用到 Apache 的虚拟主机配置. 其实Apache的虚拟主机之前也配置过,有时有效,有时又不好用,也不知道个所以然.这次我详细的写一下每一步都要怎么做: 第一步:开启Apache虚拟主机功能: Apache的虚拟主机功能,默认是关闭的.如果要使用这个功能,就要开启虚拟主机功能. 如同上文提到的A

利用nginx泛域名解析配置二级域名和多域名

利用nginx泛域名解析配置二级域名和多域名 网站的目录结构为 html ├── bbs └── www html为nginx的安装目录下默认的存放源代码的路径. bbs为论坛程序源代码路径 www为主页程序源代码路径 把相应程序放入上面的路径通过 http://www.youdomain.com 访问的就是主页 http://bbs.yourdomain.com 访问的就是论坛 其它二级域名类推. server { listen 80; server_name ~^(?<subdomain>

Nginx二级域名配置

Nginx二级域名配置模板 域名一:www.hellosr.com 域名二:daxin.hellosr.com 通过upstream进行负载均衡,通过access_log的配置规范化请求日志输出 配置如下: #运行用户 #user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 2; #全局错误日志及PID文件 #error_log /home/nginx/logs/error.log; #pid /home/nginx/logs/nginx.pi

Nginx技巧:灵活的server_name,Nginx配置一个服务器多个站点 和 一个站点多个二级域名

http://www.cnblogs.com/buffer/archive/2011/08/17/2143514.html Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了.下面我就来说说server_name的使用吧:server_name的匹配顺序nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:1.准确的server_

nginx二级域名配置自动跳转到一级域名

nginx二级域名配置自动跳转到一级域名 rewrite配置内容: if ($http_host !~ "^www.aaa.com$") { rewrite ^(.*) http://www.aaa.com$1 permanent; } 下方,nginx代理访问项目proxy_pass,及rewrite参考 server { listen 80; server_name www.aaa.com 100.100.100.100; location / { if ($http_host !

万网二级域名访问nginx子目录

最近重新安装了小站(1wei.cc)的wordpress,打算使用二级域名blog.1wei.cc访问位于根目录下的wordpress(/wordpress,对应1wei.cc/wordpress).于是开始各种搜索了,各种问答.文章.博客反复研究实验,好不折腾,谁叫咱们半路出家,好多不懂.不得不说:天下文章一大抄,大多数人不会抄,抄了也不知道注明转载,好歹写错了可以说,这不是老子写的.找到好多人写(抄)的一模一样文章解决不了问题,不过我等开始看的时候还是不明所以得称赞高级.弄完了发现也挺简单的