簡體   English   中英

Twisted + Django +反向代理

[英]Twisted + Django + Reverse Proxy

我正在將twisted部署為網站的Web服務器。 我正在研究反向代理的可能性。

我現在將以下代碼連接到我的Django的反應堆。 我正在使用彗星,並且我意識到我絕對必須使用端口80,因此我正在研究反向代理的可能性。 在此站點上,我找到以下示例:

# 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')))

我的麻煩是我真的不知道在第二個代碼部分的其余部分中要填寫什么。 我在twisted-src上查看了text_proxy,但沒有大量示例。 有什么幫助嗎?

我不清楚您為什么要使用反向代理。 我認為您出於錯誤的原因正在嘗試使用正確的工具。

反向代理很有用,因為您可以讓像nginx這樣的輕量級服務器以很少的內存開銷處理數千個http保持活動連接。 相比之下,反向代理與真實Web服務器(在您的情況下為扭曲的)之間的連接更少且壽命較短,因此您可以處理更高的負載。 請注意,如果您使用的是彗星連接壽命長,那么這里沒有任何好處,因為您需要在此期間在兩台服務器上都打開連接。

您似乎想要使用它來使端口12345上的服務器在端口80上可用。這不是反向代理的用途。 為什么不首先綁定端口80?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM