PyWSGI(Gevent)虚拟主机

时间:2012-09-04 21:19:21

标签: virtualhost gevent

是否可以在Gevent的pywsgi服务器中托管多个站点?我有一台带有bottlepy和gevent pywsgi服务器的机器,我很好奇我将如何设置第二个站点。我唯一能想到的是使用像nginx这样的前端,并在不同的内部端口上运行每个gevent服务器/站点。这真的是解决这个问题的最好方法吗?

2 个答案:

答案 0 :(得分:2)

虚拟主机不是WSGI协议的一部分。

如果您不想使用nginx或任何其他前端服务器,您可以编写或使用现有的wsgi中间件,这些中间件将发送到几个底层的wsgi应用程序。

这样的东西(我还没有测试过): http://discorporate.us/jek/projects/wfront/

但是,wsgi服务器主要用作app服务器,而不是前端服务器。我会使用nginx,apache,lighttpd或任何其他经过良好测试的前端服务器,并让它完成它的工作。 使用前端服务器的几个原因:

  • 他们检查安全性的请求完整性
  • 他们支持SSL
  • 他们通常更健壮
  • 他们可以作为几个wsgi进程的负载平衡器来扩展

答案 1 :(得分:0)

如果您想关注带有Bottle(作为应用程序)的CherryPy(作为WSGI服务器),我已经使用了一段时间,并证明它非常稳定。

以下是多个虚拟主机的示例。

import cherrypy
from bottle import Bottle
import os


app1 = Bottle() 
app2 = Bottle()

@app1.route('/')
def homePage():    
    return "=========  home1 ==============="


@app2.route('/')
def homePage_2():    
    return "=========  home2 ==============="

vhost = cherrypy._cpwsgi.VirtualHost(None, 
                                     domains={
                                              'www.domain1.com': app1, 
                                              'www.domain2.com': app2,
                                             }
                                     )

cherrypy.tree.graft(vhost) 

cherrypy.config.update({
                        'server.socket_host': '192.168.1.4',
                        'server.socket_port': 80,
                      })
cherrypy.engine.start()
cherrypy.engine.block()