【Nginx学习笔记】:Fastapi服务部署单机Nginx配置说明

发布于:2025-05-20 ⋅ 阅读:(21) ⋅ 点赞:(0)

服务部署单机Nginx配置说明

服务.conf配置文件:

upstream asr_backend {
    server 127.0.0.1:8010;
}

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这个 Nginx 配置 主要用于设置反向代理和负载均衡,接收客户端请求并转发给指定的 FastAPI 后端服务。以下是详细解释:


1️⃣ upstream 区域

upstream asr_backend {
    server 127.0.0.1:8000;
}
  • upstream:用来定义一组服务器的地址,通常用于负载均衡。如果有多个后端服务节点,可以在这里列出并设置负载均衡策略。
    • asr_backend:这是给一组后端服务器(即 FastAPI 服务节点)定义的名字。在后续的 proxy_pass 中使用。
    • server 127.0.0.1:8000:指定后端服务器的 IP 和端口号。在这个配置中,后端服务是运行在 本机 上的 8000 端口。如果有多个后端服务节点,也可以继续增加 server 行(如:server 127.0.0.1:8011;),实现负载均衡。

2️⃣ server 区域

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://localhost:8010;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • server:定义一个虚拟服务器,接收来自客户端的请求。

配置项解析

  1. listen 80;
    • 指定 Nginx 监听 80 端口,HTTP 默认端口。
    • 这是公开的入口端口,用户通过 http://your_domain.comhttp://<nginx_ip> 发起请求。
  2. server_name your_domain.com;
    • 配置域名,告诉 Nginx 哪个域名(或 IP 地址)会由此虚拟服务器处理。
    • 如果没有特殊需求,可以使用 localhost 或任何你希望接受请求的域名。如果是实际部署,your_domain.com 需要替换为实际的域名或服务器 IP 地址。
  3. location / { ... }
    • 配置请求的路径。这里使用了 /,表示匹配所有请求路径。
    • 可以通过 location 指定不同路径的转发规则,比如 /api//media/,等等。

proxy_pass 和头部设置

  • proxy_pass http://localhost:8000;
    • 这行表示 Nginx 将所有请求转发到 localhost:8000(即后端 FastAPI 服务)。
    • 如果在 upstream 配置中有多个服务器,proxy_pass 会通过负载均衡将请求分发到这些服务器。
  • proxy_set_header Host $host;
    • 设置传递给后端服务器的 Host 请求头,保留原始的主机名或 IP 地址。这对于某些后端服务的处理非常重要,尤其是当后端需要知道请求的目标主机名时。
  • proxy_set_header X-Real-IP $remote_addr;
    • 设置 X-Real-IP 请求头,将客户端的 IP 地址传递给后端服务。由于请求是通过代理(Nginx)转发的,后端服务默认只能看到 Nginx 的 IP 地址,X-Real-IP 确保后端能获取到真实的客户端 IP。
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    • X-Forwarded-For 是一个标准 HTTP 请求头,表示请求经过了哪些代理服务器。
    • 这里将真实的客户端 IP 地址添加到该头部,便于后端服务了解请求的源头。每次请求经过 Nginx 时,Nginx 会将它自己的 IP 地址附加到这个头部。

总结

  • upstream 用于定义一个后端服务池,如果有多个后端节点,Nginx 会将请求负载均衡地分发到这些节点。
  • server 区域配置了 Nginx 如何监听客户端请求并将其转发到后端服务。
  • proxy_pass 指定了请求的转发目标。
  • proxy_set_header 用来修改或添加请求头,确保后端服务能正确获取客户端的请求信息。

网站公告

今日签到

点亮在社区的每一天
去签到