在静态URL路径后面使用Twisted Reverse Proxy时,不会呈现任何内容

时间:2014-08-01 18:56:54

标签: python twisted twisted.web

我想运行Twisted服务器并在不同的URL路径上提供各种服务。我想要做的第一件事是当有人点击/app1路径时设置反向代理。这是我到目前为止,但访问127.0.0.1/app1时没有返回任何内容,它不会中断或任何内容,只是得到一个空白页。

from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.web import proxy, server    

site1 = proxy.ReverseProxyResource('127.0.0.1', 3003, '')
site2 = proxy.ReverseProxyResource('127.0.0.1', 3004, '')

root = Resource()
root.putChild("app1", site1)
root.putChild("app2", site2)


reactor.listenTCP(8090, Site(root))
reactor.run()

我已经成功地获得了这样的工作:

from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.web import proxy, server 

site = proxy.ReverseProxyResource('127.0.0.1', 3003, '')    

reactor.listenTCP(8090, Site(site))
reactor.run()

但这只适用于转到127.0.0.1:8090

有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

反向代理只能提供后端HTTP服务器提供的功能。

由于您的代码看起来或多或少是正确的,我的猜测是后端HTTP服务器没有提供您期望的响应。

您可以尝试使用tcpdump或wireshark来查看后端生成的响应 - 或者使用某些特定于服务器的工具来获取更多调试信息。您还可以尝试使用不同的后端HTTP服务器,您知道该服务器肯定会生成响应以验证代理是否(或不是)正常工作。

答案 1 :(得分:0)

所以看起来解决方案相当简单。我只需要在路径参数中添加/,并且所有内容都正确呈现:

from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.web import proxy, server    

site1 = proxy.ReverseProxyResource('127.0.0.1', 3003, '/')
site2 = proxy.ReverseProxyResource('127.0.0.1', 3004, '/')

root = Resource()
root.putChild("app1", site1)
root.putChild("app2", site2)


reactor.listenTCP(8090, Site(root))
reactor.run()