You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS请求指向本地而非EC2服务,不开放5000端口如何访问EC2 Flask服务?

问题根本原因

你当前的问题核心是前端JS代码运行在用户本地浏览器环境,代码中写死的127.0.0.1:5000默认指向运行浏览器的本地设备,而非EC2服务器。除了开放EC2 5000端口公网访问权限外,可选择以下方案解决:

可行方案
  • 方案1:配置Apache反向代理(最推荐,无跨域问题,无需额外开放端口)

    利用Apache已开放的80端口做请求转发,将特定路径的请求转发到EC2本地运行的Flask服务,步骤如下:
    1. 开启Apache的代理模块:
      a2enmod proxy proxy_http
      systemctl restart apache2
      
    2. 编辑Apache虚拟主机配置文件,添加如下规则:
      ProxyPass /api http://127.0.0.1:5000
      ProxyPassReverse /api http://127.0.0.1:5000
      
    3. 修改前端JS代码中的请求地址,改为/api/xxx(直接请求当前域名的/api路径,无需加IP和端口),请求会自动由Apache转发到Flask服务。
  • 方案2:本地SSH端口转发(适合临时开发测试场景,无需修改服务端配置)

    如果你是本地开发测试用,可以在本地设备执行SSH端口转发命令,将本地5000端口的流量转发到EC2的5000端口:
    ssh -L 5000:127.0.0.1:5000 你的EC2用户名@EC2公网IP
    
    保持SSH连接开启的状态下,本地JS请求127.0.0.1:5000就会自动转发到EC2上的Flask服务,无需在EC2安全组开放5000端口公网权限。
  • 方案3:切换服务部署逻辑

    停止Apache服务,将原本Apache托管的静态页面、JS资源都放到Flask的静态资源目录托管,直接让Flask监听EC2公网80端口,前端可以直接用相对路径请求接口,无需额外端口配置。

内容的提问来源于stack exchange,提问作者임도경

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 18:48:01