Como faço para que meu proxy torcido simples funcione?
Estou tentando fazer uso doTwisted.Web estrutura.
Observe os três comentários da linha (# linha1, # linha2, # linha3). Desejo criar um proxy (gateway?) Que encaminhe uma solicitação para um dos dois servidores, dependendo do URL. Se eu descomentar o comentário 1 ou 2 (e comentar o restante), a solicitação será enviada por proxy para o servidor correto. No entanto, é claro, ele não escolhe o servidor com base na URL.
from twisted.internet import reactor
from twisted.web import proxy, server
from twisted.web.resource import Resource
class Simple(Resource):
isLeaf = True
allowedMethods = ("GET","POST")
def getChild(self, name, request):
if name == "/" or name == "":
return proxy.ReverseProxyResource('localhost', 8086, '')
else:
return proxy.ReverseProxyResource('localhost', 8085, '')
simple = Simple()
# site = server.Site(proxy.ReverseProxyResource('localhost', 8085, '')) #line1
# site = server.Site(proxy.ReverseProxyResource('localhost', 8085, '')) #line2
site = server.Site(simple) #line3
reactor.listenTCP(8080, site)
reactor.run()
Como o código acima está atualmente, quando executo esse script e navego para o servidor "localhost: 8080 / ANYTHING_AT_ALL", recebo a seguinte resposta.
Método não permitido
Seu navegador me abordou (em / ANYTHING_AT_ALL) com o método "GET". Eu permito apenas os métodos GET, POST aqui.
Não sei o que estou fazendo de errado? Qualquer ajuda seria apreciada.