在Vultr上部署Flask应用
Flask是一个用于构建Web应用的Python框架。开发者可以轻松定义路由、处理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保护:
|
|
保存并关闭文件。
导航到模板目录:
|
|
打开index.html文件:
|
|
编辑HTML页面以包含CSRF配置:
|
|
保存并关闭文件。
退出模板目录:
|
|
配置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云推理
- 深入探索重要AI/ML Python包
- 使用Python和Milvus向量数据库实现AI驱动的搜索
- 使用Python执行自然语言处理任务
结论
在本文中,我们探讨了如何使用Nginx反向代理和Gunicorn部署Flask应用,同时实现CSRF保护和CSP。我们还通过添加SSL证书和启用HTTPS访问来保护应用程序。
本文由Vultr赞助。Vultr是全球最大的私有云计算平台。作为开发者的最爱,Vultr已为185个国家的超过150万客户提供灵活、可扩展的全球云计算、云GPU、裸机和云存储解决方案。了解更多关于Vultr的信息。