如何在自己的服务器以生产模式运行 Reflex 并正确配置 api_url 与反向代理?

发布时间:2026/9/12 2:00:22
如何在自己的服务器以生产模式运行 Reflex 并正确配置 api_url 与反向代理? 如何在自己的服务器以生产模式运行 Reflex 并正确配置 api_url 与反向代理【免费下载链接】reflex️ Web apps in pure Python 项目地址: https://gitcode.com/GitHub_Trending/re/reflex如果你已经写好 Reflex 应用需要把前端和后端部署到自己控制的服务器上而不是使用托管式的reflex deploy要完成三件事让浏览器能通过公网地址访问后端api_url、以生产模式启动应用前端静态资源在 3000 端口、后端事件处理在 8000 端口、并让反向代理正确转发 WebSocket 流量。以下内容依据 self-hosting 文档 与 配置参考。前提条件见 安装文档Python 3.10一个已安装 Reflex 的虚拟环境文档推荐 uvvenv、conda、poetry 也可代码已克隆到服务器服务器有一个公网可访问的 IP 或域名下文以app.example.com表示请替换为你的实际地址。在 rxconfig.py 中配置 api_urlapi_url是用户的浏览器用来访问后端的 URL。把它设置为服务器公网地址并带上:8000端口这是前端与后端状态正常交互的关键config rx.Config( app_nameyour_app_name, api_urlhttp://app.example.com:8000, )两条补充规则来自配置文档也可以用环境变量API_URL在运行时或导出时覆盖这样本地开发可以保留http://localhost:8000默认值当api_url指向 localhost 时前端会自动用实际访问应用的域名替换它——即后端与前端从同一地址可达例如都挂在同一个反向代理后面时无需手动设置只有后端监听地址与前端不同时才必须显式设置。反向代理挂在子路径时改用 backend_path如果你用 nginx 之类的代理把子路径例如/api/*路由到 Reflex 后端不要把前缀硬编码进api_url而是设置backend_pathconfig rx.Config( app_nameyour_app_name, api_urlhttp://app.example.com:8000, backend_path/api, )设置后所有后端端点——事件 WebSocket、/ping、/_upload、/_health、/_all_routes——都会挂在该前缀下并且导出时打包进前端的代码会自动调用带前缀的 URL代理端不需要再做请求改写。frontend_path对前端起类似作用两者相互独立两者取值都会规范化为以/开头。注意修改backend_path或frontend_path需要完整重启reflex run因为路由和挂载点在启动时注册热重载不会移动它们。以生产模式启动应用reflex run --env prod生产模式会创建应用的优化构建。默认端口分工静态前端HTML、JavaScript、CSS暴露在3000端口后端事件处理器监听8000端口。如果端口占用情况需要调整可用frontend_port/backend_port配置项或REFLEX_FRONTEND_PORT等环境变量覆盖见 配置文档。反向代理必须放行 WebSocket 的 Upgrade 头这是反向代理配置中最容易漏掉的一项后端使用 WebSocket因此 nginx、Apache 这类代理必须配置为放行Upgrade头否则浏览器无法与后端建立连接self-hosting 文档明确以此作为警告项。代理规则上只需区分两类流量后端流量/_event/*、/ping、/_upload、/_upload/*设置backend_path后为对应前缀下的路径转发到localhost:8000其余请求由代理直接返回 3000 端口的静态前端。部署后验证哪些点文档给出的成功条件是生产模式下 3000 端口能访问到静态前端、8000 端口的后端事件处理器可连接、浏览器页面能与后端状态交互。按这个清单核对访问 3000 端口或代理后的前端地址确认返回的是优化后的静态资源确认后端地址api_url指向的地址对外可达——如果 8000 端口只对代理开放而代理只暴露了前端地址那么api_url必须写浏览器实际能到达的地址页面交互事件回传、状态更新是否正常。如果页面能打开但交互无响应优先检查代理是否放行了Upgrade头以及api_url是否公网可达。后端挂出的/_health等端点在 self-hosting 文档 中有列名可作为后端存活检查入口设置backend_path后它们位于前缀之下。可选分支导出静态构建或用容器运行如果你的前端准备放到 Netlify、GitHub Pages 这类静态托管上而不是让reflex run --env prod同时提供前端可以导出静态构建。导出前确保api_url指向可访问的后端API_URLhttp://app.example.com:8000 reflex export该命令会生成两个文件frontend.zip应用压缩后的 HTML、JavaScript、CSS上传到静态托管服务和backend.zip后端 Python 代码上传到你的服务器运行。也可以传--frontend-only或--backend-only只导出其中一侧加--no-zip则不解压打包前端产物在.web/build/client/目录后端在项目根目录。另一种可选路径是容器化部署在 docker-example 目录中有现成的Dockerfile与说明如production-one-port示例用 Caddy 单端口对外内置 Redis 保存用户状态。构建前把rxconfig.py与requirements.txt放到项目根目录然后docker build -t reflex-project:latest . docker run -d -p 3000:3000 -p 8000:8000 --name app reflex-project:latest单端口示例docker-example/production-one-port额外说明容器本身无持久化停止后会丢失数据需要时用绑定挂载或命名卷持久化database和uploaded_files目录TLS 终结应由外部的负载均衡器或反向代理承担。【免费下载链接】reflex️ Web apps in pure Python 项目地址: https://gitcode.com/GitHub_Trending/re/reflex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询