Nginx配置运行python的uvicorn项目
项目代码
bash
# main.py
from fastapi import FastAPI
import uvicorn
app = FastAPI()
# 示例1:GET接口(无参数)
@app.get("/hello")
def hello():
return {"message": "Hello FastAPI"}
# 示例2:GET接口(带查询参数)
@app.get("/user/{user_id}")
def get_user(user_id: int, name: str = None):
return {"user_id": user_id, "name": name}
# 示例3:POST接口(带JSON参数)
@app.post("/create-user")
def create_user(user: dict):
return {"code": 200, "data": user, "msg": "创建成功"}
if __name__ == "__main__":
# 启动服务:host=0.0.0.0 允许外部访问,port=8000
uvicorn.run(app, host="0.0.0.0", port=8000)

运行
E:\demo>uvicorn fs:app --host 0.0.0.0 --port 8000

配置nginx
定义 Uvicorn 后端服务(可扩展多节点)
bash
upstream uvicorn_server {
# Uvicorn 运行的地址和端口(必须和启动命令一致)
server 127.0.0.1:8000;
# 可选:多节点负载均衡(如多 Uvicorn 实例)
# server 127.0.0.1:8001;
# server 127.0.0.1:8002;
}
server {
listen 80;
server_name py.com;
root "E:/demo";
# 客户端请求体最大尺寸(适配文件上传,根据需求调整)
client_max_body_size 100M;
# 所有请求转发给 Uvicorn
location / {
# 反向代理到 Uvicorn 服务
proxy_pass http://uvicorn_server;
# 传递真实客户端 IP 和 Host
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 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
# 缓冲区配置(优化大请求)
proxy_buffers 16 16k;
proxy_buffer_size 32k;
}
}
Postman调用
