【Nginx学习笔记】:Fastapi服务部署单机Nginx配置说明
服务部署单机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
:定义一个虚拟服务器,接收来自客户端的请求。
配置项解析
listen 80;
- 指定 Nginx 监听 80 端口,HTTP 默认端口。
- 这是公开的入口端口,用户通过
http://your_domain.com
或http://<nginx_ip>
发起请求。
server_name your_domain.com;
- 配置域名,告诉 Nginx 哪个域名(或 IP 地址)会由此虚拟服务器处理。
- 如果没有特殊需求,可以使用
localhost
或任何你希望接受请求的域名。如果是实际部署,your_domain.com
需要替换为实际的域名或服务器 IP 地址。
location / { ... }
- 配置请求的路径。这里使用了
/
,表示匹配所有请求路径。 - 可以通过
location
指定不同路径的转发规则,比如/api/
,/media/
,等等。
- 配置请求的路径。这里使用了
proxy_pass
和头部设置
proxy_pass http://localhost:8000;
- 这行表示 Nginx 将所有请求转发到
localhost:8000
(即后端 FastAPI 服务)。 - 如果在
upstream
配置中有多个服务器,proxy_pass
会通过负载均衡将请求分发到这些服务器。
- 这行表示 Nginx 将所有请求转发到
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
用来修改或添加请求头,确保后端服务能正确获取客户端的请求信息。