是否可以在 Gevent 的 pywsgi 服务器中托管多个站点?我有一台带有bottlepy和gevent pywsgi服务器的机器,我很好奇我将如何建立第二个站点。我唯一能想到的就是使用 nginx 之类的东西作为前端,并在不同的内部端口上运行每个 gevent 服务器/站点。这真的是解决这个问题的最佳方法吗?
问问题
288 次
2 回答
2
虚拟主机不是 WSGI 协议的一部分。
如果您不想使用 nginx 或任何其他前端服务器,您可以编写或使用现有的 wsgi 中间件,该中间件将分派到几个底层 wsgi 应用程序。
像这样的东西(我没有测试过): http ://discorporate.us/jek/projects/wfront/
但是,wsgi 服务器主要用作应用程序服务器,而不是前端服务器。我会使用 nginx、apache、lighttpd 或任何其他经过良好测试的前端服务器并让它完成它的工作。使用前端服务器的几个原因:
- 他们检查请求完整性以确保安全
- 他们支持 SSL
- 它们通常更健壮
- 它们可以充当多个 wsgi 进程的负载平衡器以进行扩展
于 2012-09-05T14:04:22.203 回答
0
如果您想关注 CherryPy(作为 WSGI 服务器)和 Bottle(作为应用程序),我已经使用了一段时间,并且证明它非常稳定。
以下是多个虚拟主机的示例。
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()
于 2014-01-22T02:21:03.420 回答