如何在宝塔面板后的阿里云服务器运行Flask项目并公网可以访问?

在你的服务器安装宝塔面板

宝塔面板是服务器运维管理系统
使用宝塔前: 手工输入命令安装各类软件,操作起来费时费力并且容易出错,而且需要记住很多Linux的命令,非常复杂。

使用宝塔后: 2分钟装好面板,一键管理服务器,鼠标点几下就能替代以前的复杂繁多命令,操作简单,看一眼就会使用。
https://www.bt.cn/new/download.html

用FTP工具FileZilla进行传输Flask项目

在这里插入图片描述

设置启动文件

在这里插入图片描述

公网ip访问会报错

* Serving Flask app 'run'
* Debug mode: on
Cannot assign requested address

Nginx 反向代理 Flask实现公网可访问

用宝塔面板安装Nginx

如果服务器的公网 IP 地址与你在 Flask 应用中设置的 IP 地址不一致,有可能是因为服务器处在一个局域网内,而公网 IP 地址是由路由器或防火墙分配的。在这种情况下,你需要设置端口转发或使用反向代理等方式来实现公网访问。

cd www/server/panel/vhost/nginx

一种常见的方式是使用 Nginx 反向代理 Flask 应用。反向代理可以将客户端的请求转发到 Flask 应用所在的服务器,然后将应用的响应返回给客户端,从而实现公网访问。

具体来说,你需要在服务器上安装并配置 Nginx,然后在 Nginx 的配置文件中添加反向代理规则,将客户端的请求转发到 Flask 应用所在的端口。

在这里插入图片描述

那么需要将 Flask 应用监听的地址改为公网 IP 地址,而不是使用 Nginx 反向代理到本地 IP 地址。

具体来说,你需要将 Flask 应用的监听地址修改为 0.0.0.0,这样 Flask 应用就会监听所有可用的网络接口,包括公网 IP 地址。例如,你可以在 Flask 应用中加入以下代码:

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

其中,host=‘0.0.0.0’ 表示 Flask 应用会监听所有可用的网络接口,包括公网 IP 地址。port=5000 表示 Flask 应用会监听 5000 端口。

然后,在 Nginx 配置文件中,你可以使用以下规则将公网流量反向代理到 Flask 应用:

location / {
    proxy_pass http://localhost:5000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

其中,proxy_pass http://localhost:5000 表示将所有请求转发到本地的 5000 端口,也就是 Flask 应用所在的端口。proxy_set_header Host $host 和 proxy_set_header X-Real-IP $remote_addr 则是设置请求头信息,保证 Flask 应用能够正确获取请求的主机名和 IP 地址。

需要注意的是,如果你想要将网站部署到公网上,需要确保服务器的网络环境和安全环境都得到了充分的保护,以避免出现安全问题。建议在部署前先进行充分的安全评估和测试。

例如,假设 Flask 应用监听在 127.0.0.1:5000,你可以在 Nginx 的配置文件中添加以下规则:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

以上配置将客户端的请求转发到 127.0.0.1:5000,并设置了 Host 和 X-Real-IP 头信息,以便 Flask 应用正确处理请求。

需要注意的是,Nginx 的配置文件可能因版本和系统的不同而有所差异,具体配置方式可以参考 Nginx 的官方文档或者其他相关资料。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值