应用程序,用水瓶建造的。我希望有以下路由:
"/" -> my Flask app
"/foo/" -> Reverse proxy toward http://bar/到目前为止,我还没有任何反向代理,因此我的应用程序看起来如下:
import app
[...]
if __name__ == '__main__':
app.app.secret_key = 'XXX'
app.app.run(debug=True, use_reloader=False)我希望整个项目只在python中完成。我不想要任何Apache或nginx堆栈(这个项目不应该出现在公共网络上)。我看到我可以使用Python服务器,比如cherrypy中的"wsgiserver“,所以我的应用程序是:
from cherrypy import wsgiserver
import app
d = wsgiserver.WSGIPathInfoDispatcher({
'/': app.app.wsgi_app
})
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8080), d)
if __name__ == '__main__':
server.start()如果我想在"/foo“中添加一个反向代理,我想我只需要:
from cherrypy import wsgiserver
import app
d = wsgiserver.WSGIPathInfoDispatcher({
'/': app.app.wsgi_app,
'/foo/': SOME_WSGI_REVERSE_PROXY
})
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8080), d)
if __name__ == '__main__':
server.start()所以我的问题是:
SOME_WSGI_REVERSE_PROXY )安沃瑟:
正如公认的anwser所提到的,下面是最后的代码:
from cherrypy import wsgiserver
import wsgiproxy.app
import app
app = app.app.wsgi_app
proxy = wsgiproxy.app.WSGIProxyApp("http://bar/")
d = wsgiserver.WSGIPathInfoDispatcher({
'/': app,
'/foo/':proxy
})
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8080), d)
if __name__ == '__main__':
try:
server.start()
except KeyboardInterrupt:
server.stop()发布于 2015-05-13 09:23:48
请参阅粘贴代理中间件。
发布于 2022-07-15 22:52:43
现在,这似乎是原始wsgiproxy的一个积极维护的替代方案:https://pypi.org/project/WSGIProxy2/
发布于 2015-08-06 20:08:21
mitmproxy: mitmproxy.org,它是一个具有反向代理功能的python代理。
https://stackoverflow.com/questions/30210428
复制相似问题