
请教: 现在有个 flask 应用 应用 A: http://127.0.0.1:8080/ 应用 B: http://127.0.0.1:5004/
路由先请求的到应用 A: http://127.0.0.1:8080/abc/qwe/ghj 判断请求的 url 中包含某个关键字,如:qwe
就将请求转发到应用 B 的相同路由上: http://127.0.0.1:5004/abc/qwe/ghj
这个能在 flask 中实现吗?
1 ranleng 2022 年 7 月 18 日 https://medium.com/customorchestrator/simple-reverse-proxy-server-using-flask-936087ce0afb 不知道是不是你想实现的,反代 但这种不是应该用 nginx 之类的么 |
3 onnethy OP 我大概自己 google 了一下,貌似 flask 自身不支持,这个是 http 的事情,只能通过 http 相关的库来解决 |
4 mekingname 2022 年 7 月 18 日 如果你的网页是做的后端渲染,Jinja2 渲染页面然后通过 Flask 返回,那么可以实现。你返回的时候做 302 跳转就可以了。 但如果你的前端是用 Nginx 来托管的,似乎就没有办法纯通过 Flask 实现,需要 Js 来配合。 |
5 tomczhen 2022 年 7 月 18 日 via Android xy 问题。 |
6 cz5424 2022 年 7 月 18 日 可以做到 |
7 cz5424 2022 年 7 月 18 日 跨域是前端的概念(浏览器限制),后端没有这个问题 |
8 Blake2Wang 2022 年 7 月 18 日 @cz5424 七楼正解,跨域是前端的概念,后端没有跨域这一说,只要你网络可达,用 flask 做规则请求分发或者简单的负载均衡转发又有何不可 |
9 gausszhou 2022 年 7 月 18 日 |
10 Kobayashi 2022 年 7 月 19 日 via Android XY 问题,为什么非要在 Flask 中实现代理? 方案一,在服务器如 Nginx 做分流。 方案二,通过 WSGI 中间件将两个 app 实例组织到一起并分流,最终作为一个 app 运行起来,避免开两个服务。这样不经过网络,只是代码中转发请求到对应的路由函数。 方案三,服务 A 向服务 B 做微服务请求。感觉是个烂方案。 方案四,为服务 A 通过代码实现反代,转发请求到 B 。https://werkzeug.palletsprojects.com/en/2.1.x/middleware/http_proxy/ 方案一优先,避免两个 app 代码耦合。我自己的话绝对不会使用方案二,且避免使用方案四。 |
11 ForNickey 2022 年 7 月 24 日 via iPhone 不就是个路由问题? Nginx 就应该跳了,不应进入代码 |