twisted反向代理连接已建立
我正在尝试建立一个反向代理(使用twisted)。这个反向代理会监听6000到6099的端口,并将这些端口映射到不同的内部IP地址。一旦有连接到某个端口,它应该进行一些预检查,比如在一个集群中启动虚拟机。
举个例子:
PublicIP:6000 -> do pre-check -> forward traffic to InternalIP-1:6800
PublicIP:6001 -> do pre-check -> forward traffic to InternalIP-2:6800
...
我修改了一个我在这里('代理和反向代理'部分)找到的例子。但是我无法让它工作。有没有人能帮帮我?
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?