Je déploie tordu comme un serveur web pour mon site. Je regarde dans les possibilités de proxy inverse.Twisted + Django + Reverse Proxy
J'ai maintenant le code suivant branché à mon réacteur pour django. J'utilise la comète, et je me rends compte que je dois absolument utiliser le port 80 donc je suis à la recherche de possibilités de proxy inverse. Sur ce site, j'ai trouvé l'exemple suivant:
# Django setup
sys.path.append("shoout_web")
os.environ['DJANGO_SETTINGS_MODULE'] = 'shoout_web.settings'
def wrapper_WSGIRootWrapper():
# Build the wrapper first
generic = WSGIHandler()
def HandlerWrapper(environ, start_response):
environ['engine'] = engine
return generic(environ, start_response)
# Thread and Allowing Ctrl-C to get you out cleanly:
pool = threadpool.ThreadPool()
pool.start()
reactor.addSystemEventTrigger('after', 'shutdown', pool.stop)
return wsgi.WSGIResource(reactor, pool, HandlerWrapper)
WSGIRoot = wrapper_WSGIRootWrapper()
# Reverse Proxy
class Simple(Resource):
isLeaf = False
def getChild(self, name, request):
if name == "orbited":
print "orbited"
return proxy.ReverseProxyResource('localhost', 12345, "/"+name)
else:
return WSGIRoot.getChildWithDefault(name, request)
# Attaching proxy + django
log_dir = './.log'
if not os.path.exists(log_dir):
os.makedirs(log_dir)
reactor.listenTCP(DJANGO_PORT, server.Site(Simple(), logPath=os.path.join(log_dir, '.django.log')))
Mon problème est que je ne sais pas vraiment quoi remplir dans la partie autre de cette deuxième partie de code. J'ai regardé text_proxy sur twisted-src et il n'y avait pas d'exemples substantiels pour cela. De l'aide?
Eh bien, j'ai le port 80 en cours d'exécution django. Mon serveur de comète est en cours d'exécution sur le port 12345. La plupart des entreprises bloquent ce port non standard. J'ai donc regardé dans le proxy inverse http://mysite.com:80/orbited/* -> localhost: 12345/* (en ce qui concerne le serveur) et http://mysite.com:80/* (sauf la première règle) pour aller à localhost: 80/* (pour django) – disappearedng
La partie else que vous avez demandé, c'est là que vous reverse-proxy au serveur exécutant django (disons sur le port 8080, parce que le port 80 est votre proxy. Si vous exécutez django avec Apache comme la plupart des gens, vous pouvez simplement utiliser Apache (sur le port 80) pour effectuer des requêtes proxy inverse pour/orbited au serveur comète.Vous pouvez le faire avec à peu près n'importe quelle configuration serveur. , vérifiez pour/orbited, reverse-proxy pour comet server, else pour django J'ai besoin de détails spécifiques sur votre configuration pour vous donner des conseils plus précis, mais vous devriez avoir l'idée générale. – Eloff