2012-09-04 67 views
0

可以在Gevent的pywsgi服務器中託管多個站點嗎?我有一臺裝有瓶裝和gevent pywsgi服務器的機器,並且很好奇我將如何去建立第二個站點。我唯一能想到的就是使用像nginx這樣的前端,並在不同的內部端口上運行每個gevent服務器/站點。這真的是解決這個問題的最好方法嗎?PyWSGI(Gevent)虛擬主機

回答

2

虛擬主機不是WSGI協議的一部分。

如果您不想使用nginx或任何其他前端服務器,則可以編寫或使用現有的wsgi中間件,該中間件將分派到多個基礎wsgi應用程序。

像這樣的東西(我沒有測試過): http://discorporate.us/jek/projects/wfront/

然而,WSGI服務器大多意味着作爲應用服務器,而不是前端服務器。我會使用nginx,apache,lighttpd或任何其他經過良好測試的前端服務器,並讓它完成工作。 使用前端服務器的幾個原因:

  • 他們檢查安全
  • 請求完整性他們支持SSL
  • 他們通常更強大的
  • 他們可以爲了負載均衡作用的幾個WSGI過程按比例分配
+0

感謝您的信息,我曾考慮編寫自己的方法,但認爲它永遠不會像nginx那樣健壯。 – scape

0

如果你想用Bottle(As Application)關注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()