快速配置 Nginx 来实现 GPT 流式传输

目录

  • [1. Nginx 参考配置](#1. Nginx 参考配置)
  • [2. Nginx 核心参数](#2. Nginx 核心参数)
  • [3. 其他参数](#3. 其他参数)

场景 :代理 ChatGPT、代理各种 GPT 工具套壳等。

1. Nginx 参考配置

支持 GPT 流式访问的配置如下,请根据实际需求适当取舍即可:

shell 复制代码
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。

相关推荐
Ruiery3 小时前
Linux 6.6内核 CPU 深度解析(七):调度器启动 — 从单核到多核,调度器分阶段点亮
linux·运维·服务器
50万马克的面包3 小时前
CSDN-栈队列数组-知识点整理
linux·运维·服务器
Wang's Blog3 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
MicrosoftCloud4 小时前
用户权限 04|/etc/sudoers 安全配置:从最小授权到「别把 ALL 随便给人」
运维·安全·ubuntu·sudo·sudoers
꯭自꯭闭꯭5 小时前
达梦事物特性及MVCC
linux·运维·数据库
亚川楼宇自控系统数据中心厂家6 小时前
实验室智能化管理系统|人环物智一体化管控平台
运维
Lsetea6 小时前
Nginx加载证书时报SSL_CTX_use_PrivateKey_file失败:私钥配对与权限排查
nginx·https·ssl证书·私钥·证书部署
zmsup7 小时前
Agent 上下文调优:结合 OpsArk 运维智能体,设计模型每一步真正需要的信息
运维·agent·上下文压缩·运维智能体·上下文调优
吴声子夜歌10 小时前
Nginx应用与运维——Nginx负载均衡应用实战(二)
运维·nginx·负载均衡
lisanmengmeng10 小时前
NRPE 添加命令(一)
linux·运维·服务器