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

目录

  • 1. Nginx 参考配置
  • 2. Nginx 核心参数
  • 3. 其他参数

场景代理 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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/836625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何推动物联网的未来?——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网作为连接物理世界和数字世界的桥梁,正逐渐改变着我们的生活和工作方式。在工业领域,物联网技术的应用不仅提高了生产效率,还实现了对设备的智能化管理和维护。而工业网关作为物联网的重要组成部分…

java数据保留几位小数的问题

String.format(): 这个方法在格式化输出时非常常用,可以方便地控制小数位数,并且语法简洁易懂。它不仅可以用于格式化浮点数和双精度数,还可以用于格式化其他数据类型,如整数、字符串等。 示例代码: BigD…

仪器校准中,CNAS对报告的认可评审要求有哪些?

CNAS扩项时,常常会有关于对报告认可的相关要求,而这些要求往往有明确规范,那么在仪器校准中,CNAS对报告的认可评审要求有哪些? 现场评审时,评审组应关注抽查报告,评审组将现场随机抽取报告&…

酷开科技让你能够放心地把遥控器交给孩子

我国电视从诞生至今已有65个年头,从黑白到彩色,从背投到液晶,电视的外观随着时代技术的发展而不断变化,直到现在随着技术的不断迭代,电视的功能越来越丰富,电视在客厅中的地位也越来越凸显。作为家庭娱乐的…

【Linux基础】Vim保姆级一键配置教程(手把手教你把Vim打造成高效率C++开发环境)

目录 一、前言 二、安装Vim 三、原始Vim编译器的缺陷分析 四、Vim配置 🥝预备知识----.vimrc 隐藏文件 🍋手动配置 Vim --- (不推荐) 🍇自动化一键配置 Vim --- (强烈推荐) ✨功能演示 五、共勉 一、前言 Vim作为…

实现字符串比较函数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i, result;char s1[100], s2[100];//填充数组&#xff1b;printf("请输入数组s1的…

2.分布式-算法

目录 一、限流算法有哪些&#xff1f; 1.计数器算法&#xff08;Counter-Based Algorithm&#xff09; 2.固定窗口算法&#xff08;Fixed Window&#xff09; 3.滑动窗口算法&#xff08;Sliding Window&#xff09; 4.令牌桶算法&#xff08;Token Bucket&#xff09; 5.…

生产设备数据管控要怎么做 可以实现精益生产和智能制造?

生产设备在制造过程中会产生多种类型的数据&#xff0c;这些数据对于优化生产流程、提高效率、降低成本和预防性维护等方面至关重要。需要对这些数据进行有效的采集和管理&#xff0c;以实现对生产设备数据管控。 一、生产设备数据类型包括&#xff1a; 设备运行状态数据&…

C++八股(面试题、手撕题)自用版

目录 面试题&#xff1a; 1. define inline 在编译的哪个阶段 2. const static 3. 子函数返回结构体有什么问题&#xff0c;返回对象调用了哪些函数 4. volatile关键字 5. 编译器基本原理 6. 预处理、编译、汇编、链接以及他们在操作系统上如何运作的 7. 数组和指针&a…

第十一届蓝桥杯大赛软件类决赛 Java 研究生组

文章目录 发现宝藏【考生须知】试题 A: 合数个数试题 B: 含 2 天数试题 C 阶乘约数试题 D: 本质上升序列试题 E: 迨尺天涯试题 F 循环小数试题 G: 蓝肽子序列试题 H 出租车试题 I: 答疑试题 J: 蓝跳跳 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&a…

【高阶数据结构(三)】图的遍历最小生成树问题

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:高阶数据结构专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; 高阶数据结构 1. 前言2. 图的遍…

成功案例(IF=7.4)| 脂代谢组学和蛋白质组学分析揭示多囊卵巢综合征的发病机制

研究背景 多囊卵巢综合征&#xff08;PCOS&#xff09;是女性最常见的内分泌和代谢紊乱&#xff0c;也是无排卵性不孕症和高雄激素血症的主要原因。患者的主要临床表现为月经少、不孕、高雄激素血症、肥胖、多毛、痤疮、胰岛素抵抗&#xff08;IR&#xff09;和B超下多囊卵巢改…

Electron学习笔记(六)

文章目录 相关笔记笔记说明 七、系统5、托盘图标(1)、设置托盘图标(2)、托盘图标闪烁(3)、托盘图标菜单 6、剪切板(1)、写入剪切板(2)、读取剪切板 7、系统通知8、其他(1)、使用系统默认应用打开文件(2)、接收拖拽到窗口中的文件(3)、使用系统字体 相关笔记 Electron学习笔记&…

具身智能论文(二)

目录 1. Code as Policies: Language Model Programs for Embodied Control2. Embodied Agents for Efficient Exploration and Smart Scene Description3. Embodied Agents for Efficient Exploration and Smart Scene Description4. Learning to explore informative traject…

Stateflow基础知识笔记

01--Simulink/Stateflow概述 Stateflow是集成于Simulink中的图形化设计与开发工具&#xff0c;主要 用于针对控制系统中的复杂控制逻辑进行建模与仿真&#xff0c;或者说&#xff0c; Stateflow适用于针对事件响应系统进行建模与仿真。 Stateflow必须与Simulink联合使用&#…

第七届世界通信工程研讨会(WSCE 2024)即将召开!

第七届世界通信工程研讨会&#xff08;WSCE 2024&#xff09;将于2024年9月27-29日在日本东京举行。WSCE 的成立旨在应对通信工程领域所面临的挑战和机遇&#xff0c;尽管该领域已趋于饱和&#xff0c;但其仍保持着强劲的发展势头。本次研讨会旨在加速通信创新并加强该领域专家…

编程技巧:什么是JavaScript递归

什么是递归 程序调用自身的编程技巧称为递归&#xff08;recursion&#xff09; 递归的基本思想是将一个复杂的问题分解成更小、更易于管理的子问题&#xff0c;这些子问题与原始问题相似&#xff0c;但规模更小。 递归的要素 基本情况&#xff08;Base Case&#xff09;&…

Python 编程语言中的 None 到底是什么?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 让我们一起深入了解 Python 中的 None。 什么是 None&#xff1f; 在 Python 编程语言中&#xff0c;None 是一个特殊的常量&#xff0c;它代表了 “无” 或 “没有值”。你可以把它想象成一个空盒子…

Debian常用命令:高效管理与运维的必备指南

在Linux世界中&#xff0c;Debian以其稳定性、安全性和开源精神赢得了广大用户的青睐。作为一个基于Linux的操作系统&#xff0c;Debian拥有丰富且强大的命令行工具&#xff0c;这些命令对于系统管理员和开发者来说至关重要。本文将为您介绍一系列Debian系统中的常用命令&#…

python 自定义包的实现

1. 代码目录 创建自定义包的时候&#xff0c;原理是当 python 检测到一个目录下存在 __init__.py 文件时&#xff0c;python 就会把它当成一个模块(module)。 下面这个例子是网上整理的代码&#xff0c;但是有些小改动&#xff0c;可以直接拿来就用。 看代码结构&#xff1a;…