我想运行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
有人有什么想法吗?
答案 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()