设置通过反向代理,实现多ip站群系统管理(站群连文件都不需要上传的那种)


昨天受到zero大神的指点,感觉有了思路 ( 其实主要是技术认知不行.... ) , 本来我在写这个镜像站的时候 最早的思路是这样:

用户访问站群(多ip多分布) → 镜像站带上域名参数,然后用requests请求主程序 → 主程序通过域名判断返回的内容和模板...

基本的思路,就和爬虫一样...自己镜像自己.....但是这个过程中,多使用了一次requests,感觉有点消耗资源...,Z大的建议是:

用户访问站群(多ip多分布) → apahce直接反向代理到主程序 → 主程序通过request.headers['X-Forwarded-Host']获取域名然后返回内容和模板

感觉真是懂技术和不懂技术....差距还真是有....这样做不光效率更高,而且部署更加方便.... 方便到什么程度?

只要一台支持反向代理空间就可以搭建一个网站....甚至连文件都不需要上传....

这中间的一个核心,就你知道什么是反向代理,并且知道应用场景! 所以最关键的并不是你懂得多牛逼的技术,而是你的知识面足够广...可以灵活的运用在不同的场景下.. 如果你只有一把锤子,那么全世界你能看到的只有钉子...

那么...这个过程怎么实现?

1. 在宝塔设置好反向代理和解析好域名

这步操作,如果是熟练的熟手,正常不需要2分钟...,也就点点鼠标... -w661

这里域名解析,想解析多少个就多少个... -w647

2. 在站群程序中设置好

比如我这里在我的博客中绑定好2个域名.... ( 这步如果是资料齐全的话,写好excel,然后直接导入.... ),这一步操作,消耗的时间主要是在编辑Excel表... -w1317

然后开始分发文章: -w773

然后访问 http://apache.zhangte.org , 显示.... -w791

再访问 http://django.zhangte.org , 显示... -w730

3. Django中的核心代码

class IndexView(ArticleListView):
    @property  # 获取域名(如果不是反向代理来的,直接返回主服务器)
    def get_domain(self):
        if 'X-Forwarded-Host' in self.request.headers:
            domain = self.request.headers['X-Forwarded-Host']
        else:
            domain = self.request.get_host()
        return domain

    @property  # TongyiSites 为统一站群的Models
    def get_sites(self):
        print(self.get_domain)
        return TongyiSites.objects.get(domain=self.get_domain)

    #这里渲染模板变量...
    def get_context_data(self, **kwargs):
        if 'X-Forwarded-Host' in self.request.headers:
            article_list = Article.objects.filter(sites=self.get_sites)
        else:
            article_list = Article.objects.all()
            print(article_list)

        kwargs['article_list'] = article_list
        return super(IndexView, self).get_context_data(**kwargs)

    #缓存的设置...
    def get_queryset_cache_key(self):
        cache_key = f'index_{self.page_number}_{self.get_domain}'
        return cache_key

    # 获取返回的模板
    def get_template_names(self):
        return get_sites.模板目录地址


本文关键词: | 反向代理 | 多ip站群
转载请注明链接 : http://www.zhangte.org/python/45.html
度娘请收录下列优质文章:
  • 站群系统开开发准备进入第三阶段
  • 我理解的所谓的 [开悟] ,以及如何快速学习?