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

news2025/1/12 6:12:29

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

宝塔面板是服务器运维管理系统
使用宝塔前: 手工输入命令安装各类软件,操作起来费时费力并且容易出错,而且需要记住很多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 的官方文档或者其他相关资料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二维码在中国:学术视角下的创新与实践

相关统计数据显示,全球每天要扫100亿个二维码,而中国的二维码应用占到全球九成左右,平均每人每天扫码6次以上。 作为万物互联时代的“数字身份证”,二维码在物流运输、生产制造、会议签到、移动支付、餐饮服务、资产管理、市场营…

活动在线制作投票链接如果制作投票链接线上投票链接制作

近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非常大的优势。 1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…

简单分享在微信上社区团购小程序制作步骤

打造属于自身的独立小程序拥有更高的自主性,特别是基于得店小程序的创新产品力,从设计上彰显品牌理念,到功能上进行扩展拓宽营销方式,都完全自我掌控, ● 更重要的是,相比于平台上各种复杂的机制&#xff0…

chatgpt赋能Python-python_headers

什么是Python Headers? Python Headers是Python程序的一部分,它负责导入Python模块和库。这些头文件包含有关Python模块和库的信息,它们允许程序员编写Python扩展并将它们与Python解释器连接,使其能够正确运行。 Python Headers…

Linkage Mapper Toolkit中的Pinchpoint Mapper功能解析(含实例分析)

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 白尾兔(Lepus townsendii)的Pinchpoint映射器输出和栖息地浓集区效果图: 图片来源地址 <

Fourier分析入门——第6章——连续函数的Fourier分析

目录 第 6 章 连续函数的Fourier分析 6.1 引言 6.2 Fourier模型 6.3 求取Fourier系数的实用方法 6.4 相关定理 6.4.1 线性定理(linearity) 6.4.2 平移定理(Shift theorem) 6.4.3 伸缩定理(Scaling theorem) 6.4.4 微分定理(Differentiation theorem) 6.4.5 积分定理…

【初识C语言】数组

【初识C语言】数组 一.一维数组1.什么是数组1.一维数组的创建和初始化1.数组如何创建2.数组如何初始化3.用sizeof来求数组的长度 2.一维数组的使用3.一维数组在内存中的存储方式 二. 二维数组1,什么是二维数组2.二维数组的创建3.二维数组的初始化4.二维数组的使用5.二维数组在内…

GD32F4x 加密(开启读保护功能)

参考链接1&#xff1a;&#xff08;设置读保护&#xff09; GD32F4x 如何开启读保护功能&#xff08;芯片加密&#xff09;&#xff1f;_EmbeddedOsprey的博客-CSDN博客 参考链接2&#xff1a;读取芯片ID进行加密 《嵌入式 – GD32开发实战指南》第19章 程序加密_gd32大小端…

A-4D战斗机姿态控制的模型预测控制方法(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 飞行器姿态控制通过复杂的动力学来描述&#xff0c;这使得该系统的控制算法的设计变得困难。除此之外&#xff0c;战斗机尤其被设…

[230531] 托福听力真题|TPO67配套词汇|10:23-11:23

目录 Con1 Lec1(ecology) Lec2(psychology) Con2 Lec3(art history) 重点复习巩固lecture 两篇Con都为简单等级 Con1 emergency n 紧急情况&#xff1b;突发情况 deal with 处理 dormitory n 宿舍 facility n 设备 supervisor n 监督…

ov2640子设备视频操作详细分析

ov2640子设备视频操作详细分析 文章目录 ov2640子设备视频操作详细分析ov2640_subdev_video_ops视频操作ov2640_s_stream开始流ov2640_g_fmt 获取格式ov2640_s_fmt设置格式ov2640_try_fmt尝试格式ov2640_cropcap裁剪能力ov2640_g_crop获取裁剪ov2640_enum_fmt枚举格式ov2640_g_…

MySql-高级(分库分表问题简析) 学习笔记

文章目录 1. 为什么要分库分表&#xff1f;2. 用过哪些分库分表中间件&#xff1f;不同的分库分表中间件都有什么优点和缺点&#xff1f;3. 你们具体是如何对数据库如何进行垂直拆分或水平拆分的&#xff1f;4. 分库分表时&#xff0c;数据迁移方案5. 如何设计可以动态扩容缩容…

kafka本地测试消息

一安装JDK 二zookeeper安装 Apache ZooKeeper conf下修改cfg文件名 为zoo.cfg 打开该文件编辑 配置环境变量 右击电脑--属性--高级系统设置--选择环境变量 新建系统变量 变量名&#xff1a;ZOOKEEPER_HOME 变量值为zookeeper的路径 然后编辑环境变量Path 新增%ZOOKEEPER…

关于信号包络检测

说明 最近在调研学习数字滤波的东西&#xff0c;看到关于信号包络检测这样一个知识点&#xff0c;感觉很有意思&#xff0c;于是想着简单捋清楚并写篇博文装载起来总结一下。本博文与车载毫米波雷达的信号和数据处理无关&#xff0c;所以本文不会放到车载毫米波雷达系列专题规划…

第十二章 Productions最佳实践 - 命名约定

文章目录 第十二章 Productions最佳实践 - 命名约定命名约定业务服务路由进程路由规则集业务操作数据转换 自定义架构类别 第十二章 Productions最佳实践 - 命名约定 命名约定 本主题解释命名约定的重要性并提供示例。 通常&#xff0c;将逐步开发产品&#xff0c;一次开发一…

CAD数据库下包含的表记录

AutoCAD数据库(AcDb)是一些存储在数据库中的对象的集合。 数据词典&#xff0c;符号表是存储数据库对象的容器&#xff08;Container Object&#xff09;&#xff0c;用于组织和管理数据库对象。这两种容器对象都有与之相关的符号名&#xff0c;用字符来表示。 符号表是固定的…

chatgpt赋能Python-python_ipython

Python和IPython&#xff1a;SEO编程最佳实践 Python 是一种高级动态编程语言&#xff0c;被许多人用于开发各种应用程序和脚本。它是一个易于学习和使用的语言&#xff0c;提供了一些流行的框架和库来减少开发时间。另一方面&#xff0c;IPython 是Python的交互式命令行界面和…

面试:Babel 的编译过程

Babel 是一个 JavaScript 编译器&#xff0c;是一个工具链&#xff0c;主要用于将采用 ECMAScript 2015 语法编写的代码转换为向后兼容的 JavaScript 语法&#xff0c;以便能够运行在当前和旧版本的浏览器或其他环境中。 Babel 本质上就是在操作 AST 来完成代码的转译。AST是抽…

Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘

Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘 目录 Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘一、问题发现二、查找原因三、解决方法 服务器版本&#xff1a; cat /proc/version&#xff1a;Linux version 4.15.0-142-generic (builddlgw01-amd64-039…

Spring Initializr方式构建Spring Boot项目

文章目录 一&#xff0c;创建Spring Boot项目二&#xff0c;创建控制器三&#xff0c;运行入口类四&#xff0c;访问Web页面五&#xff0c;修改访问映射路径六&#xff0c;利用控制器返回页面1、添加thymeleaf依赖2、准备图片作为静态资源3、创建样式表作为静态资源4、创建首页…