场景:代理 ChatGPT
、代理各种 GPT 工具套壳
等。
1. Nginx 参考配置
支持 GPT 流式访问的配置如下,请根据实际需求适当取舍即可:
server {
listen 80;
server_name chat.test.com; # 绑定的域名
# 配置的时候不要配置全局,仅在需要转发的地方进行配置
location /chatgpt {
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_pass http://chatgpt-backend; # 使用定义的服务器组
proxy_http_version 1.1; # 可选, websocket 可用
proxy_set_header Upgrade $http_upgrade; # 可选
proxy_set_header Connection "Upgrade"; # 可选
proxy_buffering off; # 核心参数
}
upstream chatgpt-backend { # 定义一组服务器,主要用于负载均衡配置
server 172.10.1.119:8080;
server 172.10.1.120:8080;
}
}
2. Nginx 核心参数
proxy_buffering off;
这个指令告诉
Nginx
不要缓冲来自上游服务器的响应,而是立即将其发送给客户端。这对于需要实时或流式传输数据的场景非常有用,比如实时聊天、流媒体等。
proxy_buffering
默认为on
:表示启用代理缓冲,Nginx 将缓冲来自后端服务器的响应,并在接收完整响应后才将其发送给客户端。这可以提高性能并减少对后端服务器的请求频率,但可能会导致延迟。
【注】打开与关闭各有对应的场景。
3. 其他参数
proxy_set_header Host $host;
设置请求的目标主机头。
$host
变量将被替换为客户端请求中的主机名。
proxy_set_header X-Real-IP $remote_addr;
设置客户端的真实 IP 地址。
$remote_addr
变量包含客户端的IP
地址。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
设置客户端 IP 地址的列表。当请求通过代理时,代理服务器会将原始客户端 IP 地址添加到
X-Forwarded-For
头部中。$proxy_add_x_forwarded_for
变量将在原始X-Forwarded-For
值的基础上添加新的IP
地址。
proxy_set_header Upgrade $http_upgrade;
设置升级头,用于告知后端服务器客户端是否支持升级到其他协议。通常用于支持
WebSocket
连接。$http_upgrade
变量包含请求中的Upgrade
头部信息。
proxy_set_header Connection "Upgrade";
设置连接头,指示客户端和服务器之间的连接类型。在支持
WebSocket
的情况下,将连接类型设置为 “Upgrade
” 以启用升级协议。
proxy_http_version 1.1;
proxy_http_version 指令用于设置与后端服务器之间的
HTTP
协议版本。默认情况下,Nginx
会使用与客户端之间相同的HTTP
协议版本与后端服务器通信。但有时您可能希望显式地指定与后端服务器之间使用的HTTP
协议版本。
指定 `proxy_http_version 1.1;` 表示要求 Nginx 与后端服务器之间使用 HTTP/1.1 协议进行通信。HTTP/1.1 是较新的协议版本,具有许多改进和增强功能,比如持久连接、分块传输编码等。通过指定HTTP/1.1,您可以确保与后端服务器之间使用最新的协议特性,并可能提高性能和功能。
【注】默认情况下,Nginx 会自动检测客户端的 HTTP 协议版本,并与后端服务器进行相应的通信。因此,通常情况下不需要显式地设置 proxy_http_version
。