2014-04-24 80 views
0

我想構建一個反向代理(與扭曲)。反向代理偵聽端口6000-6099,並應將這些端口映射到不同的內部IP地址。一旦連接到端口,它應該執行一些預先檢查,例如啓動集羣中的虛擬機。twisted twistedProxy connectionMade

實施例:

PublicIP:6000 -> do pre-check -> forward traffic to InternalIP-1:6800 
PublicIP:6001 -> do pre-check -> forward traffic to InternalIP-2:6800 
... 

我修改我發現here (section 'Proxies and reverse proxies')一個例子。但我無法讓它工作。任何人都可以幫忙嗎?

from twisted.web import proxy, http 
from twisted.internet import reactor 
from twisted.python import log 
import sys 
log.startLogging(sys.stdout) 

machines = {} 

class ProxyFactory(http.HTTPFactory): 
    protocol = proxy.ReverseProxy 

    def connectionMade(self): 
     if not machines.has_key(self.request.port): # self.request.port?! 
      # start new machine in cluster 
      # machines[self.request.port] = new_machine_ip 

     # reverse proxy to machines[self.request.port] on port 6800 
     # return proxy.ReverseProxyResource(machines[self.request.port], 6800, '/') 

for port in range(6000,6100): 
    reactor.listenTCP(port, ProxyFactory()) 
reactor.run() 

編輯:

  • 我怎樣才能獲得當前請求的端口?
  • 如何將流量傳遞到內部IP?
+0

'無法正常工作'是什麼意思? – User

+0

我編輯了我的問題上面。 – mattes

回答