反向代理 | 使用Nginx和Certbot托管您的应用

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

最近,我创建了一个FastAPI应用作为多个前端服务的后端。如果任何前端访问https://some-api.somecompany.com/my-api,后端将会响应。安装步骤包括创建云平台上的虚拟机,安装Nginx,使用CertBot获取证书启用HTTPS,测试应用,确保虚拟机IP是静态的,设置cron job以在系统重启时运行应用。

🔎

延伸解读

反向代理配置的关键细节

文章中的Nginx配置将80端口的请求转发到本地8000端口,但测试时FastAPI应用实际运行在8080端口。这种端口不一致可能导致代理失败,读者需确保proxy_pass中的端口与应用启动端口一致。此外,server_name后缺少分号,实际配置中需补全以避免语法错误。

Certbot自动化HTTPS的便利与局限

使用Certbot可以自动获取并配置HTTPS证书,简化了SSL/TLS的部署。但文章仅展示了交互式获取证书的过程,未涉及证书自动续期。Certbot默认会添加续期任务,但若Nginx配置有误,续期可能失败。建议读者定期检查证书状态,确保持续可用。

静态IP与自启动的部署考量

文章强调虚拟机IP需为静态,否则DNS记录会失效,导致服务不可达。同时,通过cron的@reboot实现应用自启动,但需注意使用bash -c来确保环境变量和虚拟环境正确加载。若应用崩溃,cron不会自动重启,生产环境建议结合systemd等工具实现更可靠的进程管理。

❓

Q&A

如何在云平台上创建虚拟机以托管FastAPI应用?

在云平台上创建虚拟机时,选择Ubuntu 24.04 LTS作为操作系统,并确保虚拟机的IP地址是静态的。

如何使用Nginx配置反向代理?

使用Ubuntu的apt包管理器安装Nginx,并编辑配置文件以设置反向代理,指向FastAPI应用的地址。

如何使用Certbot获取HTTPS证书?

使用snap安装Certbot,然后运行命令'sudo certbot --nginx'来获取HTTPS证书,并按照提示选择要激活HTTPS的域名。

如何确保FastAPI应用在系统重启后自动运行?

设置一个cron job,在系统重启时运行FastAPI应用的启动命令,确保应用能够自动启动。

FastAPI应用的测试步骤是什么?

在终端中进入应用目录,激活虚拟环境,然后使用命令'uvicorn main:app --host 0.0.0.0 --port 8080'启动应用,最后访问相应的URL进行测试。

为什么需要将虚拟机的IP地址设置为静态?

将虚拟机的IP地址设置为静态可以确保在虚拟机停止和重新启动后,IP地址不会改变,从而避免访问问题。

🏷️

标签

➡️

继续阅读