在Vultr上部署Flask应用
介绍
Flask是一个用于构建Web应用的Python框架。通过Flask,开发者可以轻松定义路由、处理HTTP请求和响应,并使用Jinja2模板渲染动态内容。它还支持扩展,允许开发者集成数据库访问、表单处理和用户认证等功能。
在本文中,我们将使用Gunicorn部署一个Flask应用,同时实现CSRF保护和内容安全策略。我们还将使用Nginx设置反向代理,并通过Let’s Encrypt申请免费SSL证书来实现HTTPS。
部署Vultr优化云实例
- 注册并登录Vultr客户门户
- 导航到产品页面
- 从侧边菜单选择计算
- 点击中心的部署服务器按钮
- 选择优化云计算作为服务器类型
- 选择服务器位置
- 选择Ubuntu 24.04作为操作系统
- 选择合适的套餐
- 根据需要选择任何附加功能
- 点击立即部署
添加演示应用程序代码文件
设置Python虚拟环境
安装python3-venv包
|
|
创建虚拟环境
|
|
激活虚拟环境
|
|
添加演示应用程序代码文件
克隆GitHub仓库
|
|
导航到项目目录
|
|
安装Flask和Gunicorn包
|
|
允许传入连接到端口5000
|
|
应用CSRF保护和内容安全策略
跨站请求伪造(CORS)是一种漏洞,允许攻击者利用用户在受信任网站上的登录会话来向用户信任的不同网站发出未经授权的请求。WTForms是一个Flask扩展,默认集成了CSRF保护以防止CORS攻击。
内容安全策略(CSP)是为Web应用程序提供的额外安全层,可保护它们免受恶意攻击。CSP指示浏览器允许在特定网页上加载哪些资源。通常,网站管理员通过向服务器响应添加特殊标头来配置CSP,然后浏览器接收CSP标头并了解允许加载哪些资源。Talisman是一个Flask扩展,简化了向Flask应用添加CSP的过程。
安装flask-wtf和talisman包
|
|
打开app.py文件
|
|
编辑app.py文件以包含内容安全策略
|
|
在app.py文件中,导入并配置CSRF保护
|
|
保存并关闭文件。
导航到templates目录
|
|
打开index.html文件
|
|
编辑HTML页面以包含CSRF配置
|
|
保存并关闭文件。
退出templates目录
|
|
配置Nginx作为反向代理
Nginx充当Web服务器和客户端之间的反向代理。它根据您的请求配置设置指导传入请求。在本节中,我们将为应用程序配置反向代理以实现高效的请求处理和负载均衡。我们还将从Let’s Encrypt申请免费SSL证书,以为我们的域名实现HTTPS,保护用户和Web服务器之间的通信。
- 登录Vultr客户门户
- 导航到产品页面
- 从侧边菜单展开网络下拉菜单,选择DNS
- 点击中心的添加域名按钮
- 通过选择服务器的IP地址按照设置过程添加您的域名
- 在您的域名注册商处设置以下主机名作为您域名的主要和次要名称服务器:
- ns1.vultr.com
- ns2.vultr.com
安装Nginx
|
|
创建新的Nginx配置文件
|
|
将以下配置粘贴到文件中
|
|
激活虚拟主机配置
|
|
测试Nginx配置
|
|
重新加载Nginx
|
|
允许传入连接到端口80和443
|
|
安装certbot包
|
|
请求SSL证书
|
|
启动Gunicorn服务器
|
|
您现在可以通过https://<your_domain>访问您的Flask应用程序。
在Vultr上使用Python应用做更多事情
- 容器化Python Web应用程序
- 在Ubuntu 24.04上安装Python和Pip
- 在Python中使用Vultr Cloud Inference
- 深入探索重要的AI/ML Python包
- 使用Python和Milvus向量数据库实现AI驱动的搜索
- 使用Python执行自然语言处理任务
结论
在本文中,我们探讨了如何使用Nginx反向代理和Gunicorn部署Flask应用,同时实现CSRF保护和CSP。我们还通过添加SSL证书和启用HTTPS访问来保护应用程序。
这是Vultr赞助的文章。Vultr是世界上最大的私有云计算平台。作为开发者的最爱,Vultr已为185个国家的超过150万客户提供灵活、可扩展的全球云计算、云GPU、裸金属和云存储解决方案。了解更多关于Vultr的信息。