博客程序自定义域名是基于什么原理

2013-07-08 17:54:03 +08:00
 kenneth
博客程序是如何自制绑定域名的呢
比如数据库留一个字段 custom_domain:你绑定的域名
如何将博客程序的所有链接,都变成这个自定义的域名的?

求思路,类似diandian, logdown,wrintings.io的绑定域名。
想知道代码实现的逻辑。
4367 次点击
所在节点    程序员
17 条回复
leojoy710
2013-07-08 17:56:56 +08:00
从$host拿到变量反向代理到app的对应的route上?...
2code
2013-07-08 17:57:09 +08:00
首先,子域名可以配置wildcard
然后......
xdite
2013-07-08 17:57:57 +08:00
```
constraints(Subdomain) do
get '/' => 'posts#index'


resources :posts do
collection do
get :search
end
end

end
```

```
# -*- encoding : utf-8 -*-
class Subdomain
def self.matches?(request)

case request.host
when Setting.host, "www.#{Setting.host}", nil
false
else
true
end
end

end

```

配上 nginx 的 wildcard
kenneth
2013-07-08 17:58:32 +08:00
@leojoy710 反向代理好像要在nginx中配置吧,能否代码中自动反向代理呢?
xdite
2013-07-08 18:00:38 +08:00
leojoy710
2013-07-08 18:03:53 +08:00
@kenneth 代码里面就是从header拿到hostname...
kenneth
2013-07-08 18:05:57 +08:00
@xdite 感谢大牛分享rails实现,但是我想自己在tornado中也实现一下,nginx这边配置还不是很懂原理。是反向代理?还是什么?
比如自定义域名aaa.com
访问
www.aaa.com
解析到ip
请求进来nginx
nginx这里配置不明白。。。
leojoy710
2013-07-08 18:13:09 +08:00
lhx2008
2013-07-08 18:17:09 +08:00
我想应该是全部解析到一个PHP程序(nginx配置添加多个域名),然后PHP识别当前域名,抽出相关的内容,这个是比较简单的程序吧,像点点那些不清楚
kenneth
2013-07-08 18:19:07 +08:00
@leojoy710 是不是我在自绑定域名的地方,CNAME指向kenneth.aaa.com,然后再自己分发请求路由?
xdite
2013-07-08 18:20:52 +08:00
我收到某一個 controller 裡面,然後 find_by_subdomain 或 find_by_fqdn 決定 render 誰的 blog.
leojoy710
2013-07-08 18:26:50 +08:00
@kenneth *.aaa.com都指向你服务器...
然后nginx就能收到*.aaa.com了...然后你看是在nginx上做还是在tornado里面做...
kenneth
2013-07-08 18:27:01 +08:00
@xdite 我不太明白tornado中如何处理这请求了。我想在我的tornado博客程序中也实现一下。
kenneth.aaa.com
hello.aaa.com
world.aaa.com
这样二级域名我可以处理但是如果绑定www.mydomain.com cname解析到kenneth.aaaa.com我就不知道怎么处理了
xdite
2013-07-08 20:20:23 +08:00
messense
2013-07-08 20:23:40 +08:00
BOYPT
2013-07-09 09:09:28 +08:00
@kenneth CNAME的意思是www.mydomain.com的IP地址和kenneth.aaaa.com一样,但是kenneth.aaaa.com不会出现在任何逻辑当中。
thetcc
2013-07-09 09:17:38 +08:00
泛解析,把*.yourdomain.com 解析到你的IP,你的程序获取到hostname,根据hostname的第一个字符串,比如abc.yourdomain.com,根据abc显示abc用户的主页就可以了。 有没有nginx都可以的,你也可以根据abc的字符串分组分发到不同的实例。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/75153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX