当前位置: 首页 > news >正文

Python 后端基础(十八):Nginx 怎么用,反向代理、静态资源、HTTPS 和负载均衡讲清楚

很多 Python 后端项目本地是直接访问 `localhost:8000`,但上线后一般不会让用户直接访问 Uvicorn 或 Gunicorn。

更常见的做法是:用户先访问 Nginx,Nginx 再把请求转发给后端服务。

【一、Nginx 是什么】

Nginx 是一个高性能 Web 服务器,也常用作反向代理。

常见用途:

- 反向代理后端 API。

- 托管静态资源。

- 配置 HTTPS。

- 做负载均衡。

- 做请求限流。

- 统一入口转发多个服务。

【二、什么是反向代理】

反向代理就是用户不直接访问后端服务,而是访问代理服务器。

用户浏览器

-> Nginx 80/443

-> 后端 FastAPI 8000

用户只知道域名,不需要知道后端服务端口。

配置示例:

server {

listen 80;

server_name example.com;

location /api/ {

proxy_pass http://127.0.0.1:8000/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

}

【三、为什么不用后端服务直接暴露】

原因:

- Nginx 更适合处理公网流量。

- 可以统一配置 HTTPS。

- 可以转发多个后端服务。

- 可以处理静态文件。

- 可以做限流和负载均衡。

- 后端服务只需要监听内网端口。

这是一种更常见的生产部署方式。

【四、静态资源】

前端打包后的文件可以由 Nginx 提供。

location / {

root /var/www/frontend;

index index.html;

try_files $uri $uri/ /index.html;

}

后端只负责 API,前端静态文件交给 Nginx,效率更高。

【五、HTTPS 配置】

HTTPS 证书一般配置在 Nginx 层。

server {

listen 443 ssl;

server_name example.com;

ssl_certificate /etc/nginx/certs/fullchain.pem;

ssl_certificate_key /etc/nginx/certs/privkey.pem;

}

用户访问 HTTPS,Nginx 负责 TLS,后端服务可以继续使用内网 HTTP。

【六、负载均衡】

如果有多个后端实例:

upstream backend {

server 127.0.0.1:8001;

server 127.0.0.1:8002;

}

server {

listen 80;

location /api/ {

proxy_pass http://backend;

}

}

Nginx 会把请求分发到不同实例,提高并发能力和可用性。

【七、常见请求头】

反向代理时常见配置:

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

这些头可以让后端知道原始请求的域名、用户 IP 和协议。

【八、常见坑】

- Nginx 转发路径多了或少了 `/`,导致接口 404。

- 后端只监听 `127.0.0.1`,但容器之间访问失败。

- 文件上传大小超过 Nginx 默认限制。

- 超时时间太短,AI 接口还没返回就 504。

- 没配置 HTTPS,登录 token 明文传输。

- 静态资源路径配置不对,前端刷新页面 404。

【九、面试常问】

1. Nginx 在后端部署中有什么作用?

Nginx 常作为统一入口,负责反向代理、静态资源、HTTPS、负载均衡、限流等,把公网请求转发给内部后端服务。

2. 正向代理和反向代理区别是什么?

正向代理代理客户端,比如公司代理服务器;反向代理代理服务端,比如用户访问 Nginx,Nginx 转发到后端服务。

3. 502 和 504 一般是什么问题?

502 通常是网关无法从上游服务获得有效响应,可能后端挂了或端口错了;504 通常是上游服务响应超时,比如后端处理太慢。

http://www.jsqmd.com/news/1140186/

相关文章:

  • VTube Studio API架构:虚拟主播系统的WebSocket通信与事件驱动设计
  • vLLM与SGLang推理框架性能横评的技术文章大纲
  • 于react19+vite8+arco+zustand搭建后台管理模板【基础框架】
  • 基于SpringBoot+Vue高校社团平台
  • 【Bug已解决】OpenClaw 升级后报错 Invalid configuration key: legacy_path 解决方案
  • CLIP ViT-B/32 零样本图像分类实战:CIFAR-100 数据集 Top-5 准确率 65.31%
  • 阿里云天池森林火灾数据集分析:3步完成数据预处理与特征工程
  • ChanlunX缠论分析插件:从手工绘图到算法识别的技术跃迁
  • 抖音动态监控助手:5分钟部署,实时追踪博主更新与直播提醒
  • Awards | 百奥几何唐建博士获 WWW 2026 Test of Time Award
  • Web安全入门实战:从零搭建合法靶场与核心漏洞手动测试指南
  • TensorFlow 2.x 石头剪刀布数据集实战:ImageDataGenerator 5种数据增强效果对比
  • RT-DETR升级:CVPR2026 FourierSR+RepC3|全局频域建模+重参数化融合,轻量高精实时检测
  • hw-buaa-lab项目路线图:未来技术发展与学习规划展望
  • 终极指南:3步实现塞尔达传说Switch与WiiU存档自由互通
  • 计算机毕业设计之jsp农作物生长监测系统的设计与实现
  • 软件测试实战指南:从接口自动化到性能压测的完整落地方案
  • 搞懂 Linux 内核容器技术,才算真正吃透 Linux 内核底层
  • 降重降AI工具哪家强?多款AI降重平台实测对比
  • 大学生必备7款AI论文写作工具,一站式搞定选题初稿与降AI率
  • AI技术助力SEO关键词优化的有效 Strategies
  • Notepad--跨平台文本编辑器:国产软件的终极替代方案
  • 螺柱焊技术介绍:从原理到应用的全景解析
  • 2027财年XBOX将裁员3200人,多方面重置开启新征程!
  • 亲测12款论文降AI率网站,效果最优的竟然是它!
  • 计算机毕业设计之jsp拍卖系统的设计与实现
  • 终极指南:5分钟实现Switch与WiiU《塞尔达传说:旷野之息》存档自由转换
  • 用AI轻松搞定PRD!小白程序员必备的文档神器,收藏学习更高效!
  • 明清山陕商帮如何搭建跨区域药材流通链路?古代商贸网络复盘
  • [EyeSurfaceTypeDebug节点]原理解析与实际应用