服務部署單機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
用來修改或添加請求頭,確保后端服務能正確獲取客戶端的請求信息。