Nginx 对接后端 Python 应用的 WSGI 配置

冷炫風刃

冷炫風刃

2026-07-29

883人浏览

原创

nginx不运行python代码,仅作反向代理处理静态文件、ssl终止等;wsgi服务器(uwsgi/gunicorn)负责加载python应用并执行逻辑:uwsgi用uwsgi协议通信,需uwsgi_pass+include uwsgi_params;gunicorn用http协议,需proxy_pass及正确header透传。

nginx 对接后端 python 应用的 wsgi 配置

Nginx 本身不直接运行 Python 代码,必须通过 WSGI 服务器(如 uWSGI 或 Gunicorn)作为中间层。它的角色是反向代理:接收客户端请求,将动态请求转发给 WSGI 服务,同时高效处理静态文件、SSL 终止、负载均衡和安全防护。

明确 Nginx 与 WSGI 服务器的分工

理解这个分层结构是配置正确的前提:

  • Nginx:不解析 Python,只做 HTTP 层工作——路由、缓存、压缩、日志、静态资源(CSS/JS/图片)直接响应
  • WSGI 服务器(uWSGI/Gunicorn):加载 Python 应用(如 wsgi.py),管理进程/线程,执行业务逻辑,返回标准 HTTP 响应
  • 通信协议:Nginx 与 uWSGI 推荐用 uwsgi 协议(性能最优);与 Gunicorn 则用标准 http 协议

uWSGI 场景下的 Nginx 配置要点

当后端使用 uWSGI 时,Nginx 需启用 ngx_http_uwsgi_module,关键配置如下:

Python Linux版
Python Linux版

Python Linux版 为 Python.org 官方提供的 Python 3.14.6 Linux/Unix 源码包,适合在Linux/Unix环境中安装、运行 Python 代码并学习函数、模块和脚本开发。

下载
  • uwsgi_pass 指向 uWSGI 监听地址(如 127.0.0.1:9000 或 Unix socket unix:/tmp/myapp.sock
  • 必须包含 include uwsgi_params; —— 它预定义了几十个 uwsgi_param,把客户端真实 IP、协议类型等关键信息透传给 uWSGI
  • 避免仅写 proxy_pass,那是给 HTTP 后端用的;uWSGI 要求专用指令

示例片段:

location / {
    uwsgi_pass 127.0.0.1:9000;
    include uwsgi_params;
    uwsgi_read_timeout 300;
}

Gunicorn 场景下的 Nginx 配置要点

Gunicorn 自身提供 HTTP 接口,Nginx 将其视为普通 HTTP 后端:

  • 使用 proxy_pass http://127.0.0.1:8000;(Gunicorn 默认监听 8000)
  • 必须设置关键 header,确保应用获知原始请求信息:
    • 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;
  • 建议添加超时控制:proxy_connect_timeout 60;proxy_send_timeout 60;proxy_read_timeout 60;

通用安全与健壮性补充

无论选 uWSGI 还是 Gunicorn,以下配置都建议加入:

  • 限制请求体大小:client_max_body_size 50M;(防止上传攻击或 OOM)
  • 隐藏服务指纹:server_tokens off;(减少暴露 Nginx 版本)
  • 启用 HSTS(若已配 HTTPS):add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
  • /static//media/ 路径做本地文件服务,不转发给 Python:
    • location /static/ { alias /var/www/myapp/static/; }

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1083

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2081

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2578

10

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1104

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

2024

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1184

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

8452

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

1429

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

1503

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习