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应用,方便测试和展示。

相关推荐
间彧1 小时前
Windows Server,如何使用WSFC+nginx实现集群故障转移
后端
间彧1 小时前
Nginx + Keepalived 实现高可用集群(Linux下)
后端
间彧1 小时前
在Kubernetes中如何部署高可用的Nginx Ingress Controller?
后端
间彧1 小时前
Ribbon负载均衡器和Nginx负载均衡器有什么区别
后端
间彧1 小时前
Nacos详解与项目实战
后端
间彧1 小时前
nginx、网关Gateway、Nacos、多个服务实例之间的数据链路详解
后端
间彧1 小时前
Nacos与Eureka在性能上有哪些具体差异?
后端
间彧1 小时前
详解Nacos健康状态监测机制
后端
间彧1 小时前
如何利用Nacos实现配置的灰度发布?
后端
毕业设计制作和分享1 小时前
springboot159基于springboot框架开发的景区民宿预约系统的设计与实现
java·spring boot·后端