Flask应用调试模式下外网访问的技巧

Flask应用调试模式下外网访问的技巧

在调试模式下让外网访问你的Flask应用需要注意安全性问题,因为调试模式会暴露更多信息。以下是几种方法让你在开发过程中从外网访问你的应用:

方法一:修改Flask运行参数

最简单的方法是修改Flask的运行参数,让它监听所有网络接口:

bash 复制代码
flask run --host=0.0.0.0 --port=5000

或者在Python脚本中:

bash 复制代码
python -c "from app import app; app.run(host='0.0.0.0', port=5000, debug=True)"

这样设置后,你可以通过服务器的IP地址和端口访问应用:http://你的服务器IP:5000

方法二:使用环境变量

你也可以通过设置环境变量来实现:

bash 复制代码
export FLASK_APP=family_website.py
export FLASK_ENV=development
export FLASK_RUN_HOST=0.0.0.0
export FLASK_RUN_PORT=5000
flask run

方法三:在应用入口文件中修改

在family_website.py或主应用文件中添加:

python 复制代码
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

然后直接运行该文件:

bash 复制代码
python family_website.py

安全注意事项

  1. 防火墙设置 :

    确保服务器防火墙允许5000端口的访问:

    bash 复制代码
    sudo ufw allow 5000/tcp
  2. 临时性使用 :

    调试模式下的外网访问应该只是临时的,不要在生产环境中使用调试模式。

  3. 密码保护 :

    考虑使用基本的HTTP认证来保护你的开发站点:

    bash 复制代码
    pip install Flask-BasicAuth

    然后在应用中添加:

    python 复制代码
    from flask_basicauth import BasicAuth
    
    app.config['BASIC_AUTH_USERNAME'] = '用户名'
    app.config['BASIC_AUTH_PASSWORD'] = '密码'
    app.config['BASIC_AUTH_FORCE'] = True
    
    basic_auth = BasicAuth(app)
  4. IP限制 :

    如果你只需要从特定IP访问,可以使用防火墙限制:

    bash 复制代码
    sudo ufw allow from 你的IP地址 to any port 5000

方法四:使用内网穿透工具

如果你在家庭网络或NAT后面,可以使用内网穿透工具:

使用ngrok

  1. 下载并安装ngrok:

    bash 复制代码
    wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
    tar xvzf ngrok-v3-stable-linux-amd64.tgz
  2. 注册并获取authtoken:

    在ngrok官网注册账号,获取authtoken

  3. 配置ngrok:

    bash 复制代码
    ./ngrok authtoken 你的authtoken
  4. 启动ngrok:

    bash 复制代码
    ./ngrok http 5000
  5. ngrok会提供一个公网URL,通过这个URL可以访问你的应用

使用frp

  1. 下载frp:

    bash 复制代码
    wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
    tar xvzf frp_0.51.3_linux_amd64.tar.gz
    cd frp_0.51.3_linux_amd64
  2. 配置frpc.ini:

    ini 复制代码
    [common]
    server_addr = 你的frp服务器IP
    server_port = 7000
    
    [web]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 5000
    remote_port = 8080
  3. 启动frpc:

    bash 复制代码
    ./frpc -c frpc.ini
  4. 通过http://你的frp服务器IP:8080访问应用

方法五:使用SSH隧道

如果你有一台公网服务器,可以使用SSH隧道:

bash 复制代码
ssh -R 8080:localhost:5000 用户名@公网服务器IP

然后通过http://公网服务器IP:8080访问应用。

总结

  1. 最简单的方法是使用flask run --host=0.0.0.0,但需要确保防火墙设置正确。
  2. 对于NAT后的设备,使用ngrok或frp等内网穿透工具是最方便的选择。
  3. 记住,调试模式下的外网访问仅用于开发和测试,不要在生产环境中使用。
  4. 如果可能,使用IP限制或密码保护来增加安全性。

通过以上方法,你可以在开发过程中让外网用户访问你的Flask应用,方便测试和展示。

相关推荐
全栈练习生35 分钟前
AI Agent 沙箱
python·ai
智码看视界2 小时前
Edge AI 全栈实战 ⑤:云边协同收尾——MQTT 桥接 + 云端看板管 N 台边缘设备
mqtt·flask·iot·全栈开发·云边协同·edgeai
SEO_juper2 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
用户69371750013842 小时前
2026,程序员的时代拐点到了
android·前端·后端
惜鸟2 小时前
从源码看 pi 的上下文管理:原始数据永久保留,模型视角按需裁剪
后端
量化分析码农2 小时前
【Python量化策略评估体系 #05】极端行情扛得住吗?2008/2015/2020 三场景压力测试
后端
十年Java程序媛2 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
IT_陈寒3 小时前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端
用户8356290780513 小时前
使用 Python 对 Excel 工作表进行排序
后端·python
程序员cxuan3 小时前
腾讯又来一王炸,开源版 WorkBuddy 太夯了!
人工智能·后端·程序员