首页 > 系统相关 >nginx在代理到upstream时转换http1.1为http1.0,长连接转为短连接

nginx在代理到upstream时转换http1.1为http1.0,长连接转为短连接

时间:2023-06-02 14:58:42浏览次数:51  
标签:http1.0 http1.1 www http Accept Content nginx upstream 连接

nginx在代理到upstream时的默认行为

最近准备用openresty替换nginx,替换的效果当然是需要保证效果和nginx一致,不然可能就会导致线上在用的服务出现问题。

替换成openresty后,在本地进行了一个请求,header如下:

POST /servlet/json HTTP/1.1
Host: 10.80.121.xxx:9900
Connection: keep-alive
Content-Length: 423
Content-Type: application/x-www-form-urlencoded
Cookie: JSESSIONID=abcciHlT1nqAi571RB6Hy
Accept: */*
User-Agent: maios/3.9.0 (iPhone; iOS 13.5.1; Scale/2.00)
Accept-Language: zh-Hans-CN;q=1

Accept-Encoding: gzip, deflate

在经过nginx转发到upstream后,发现请求竟然变了:

POST /servlet/json HTTP/1.0
Host: 10.80.121.xxx
Connection: close
Content-Length: 423
Content-Type: application/x-www-form-urlencoded
Cookie: JSESSIONID=abcciHlT1nqAi571RB6Hy
Accept: */*
User-Agent: maios/3.9.0 (iPhone; iOS 13.5.1; Scale/2.00)
Accept-Language: zh-Hans-CN;q=1
Accept-Encoding: gzip, deflate

主要的变化有两处,一个是版本从1.1变成1.0,另一个是keep-alive变成了close。

image-20230602143449380

一开始,还以为是openresty搞的鬼,结果发现nginx自己也是这样。

背后原因

在nginx文档,http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version,显示:

image-20230602143623434

网上一搜,有相关的文档,里面也有强制使用http1.1的方案:

Mistake 3: Not Enabling Keepalive Connections to Upstream Servers

https://www.nginx.com/blog/avoiding-top-10-nginx-configuration-mistakes/#no-keepalives

标签:http1.0,http1.1,www,http,Accept,Content,nginx,upstream,连接
From: https://www.cnblogs.com/grey-wolf/p/17451727.html

相关文章

  • 御斧R108蓝牙连接说明
    御斧R108蓝牙连接说明https://shanle.lanzout.com/iIvdV0xzj5dg......
  • jenkins连接windows实现远程传递文件
    很多场景需要在windows部署程序,这就需要在jenkins中连接windows服务器,从远程发送命令到windows。很多IT工作都是及简单的需求,但对于不经常做的IT人员就需要发费很多时间,并且耽误进度,无法得到上级的认可。因此类似这些问题我们都会总结成文,以便可续不在踩坑耽误时间。如用jenkins连......
  • 关于消费端接入dubbo,连接失败问题
    服务端定义好的dubbo接口,确定已经在zookeeper上了,消费端需要连接对应的zookeeper.首先引入maven<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>2.7.8</version>......
  • Windows11 访问WINOWS 2003 远程桌面提示 由于这台计算机没有远程桌面客户端许可证,远
    今天遇到,,Windows11访问WINOWS2003远程桌面 提示如下,解决方法在提示由于由于这台计算机没有远程桌面客户端许可证,远程会话连接己断开的计算机上,  打开注册表regedit计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\ 选中LICENSE000,将其删除 ......
  • proc c++连接oracle
    环境:oracle11g、vs20221、编写pc文件EXECSQLBEGINDECLARESECTION;structdatatable{intid;charname[30];}data;EXECSQLENDDECLARESECTION;ViewCode//#defineSQLCA_STORAGE_CLASSextern//增加该行报错EXECSQLINCLUDEconnect_oracle.h;......
  • windows cmd使用ssh连接Linux以及文件上传
    CMD连接服务器命令(47.102.144.221为服务器IP)[email protected]文件上传(scp后面参数为本地文件地址,47.102.144.221为服务器IP,冒号后面指将文件上传到服务器哪个目录下)scpD:\[email protected]:/server/tmp如何要从服务器下载文件还是使用scp命令如下:sc......
  • 可视化全连接层(蒙特卡洛法)
    importrandomimporttorchimporttorch.nnasnnimportmatplotlib.pyplotaspltimportnumpyasnpimportmathfromtorch.utils.dataimportDataLoaderfromtorch.utils.dataimportDatasetepochs=1000classpt:def__init__(self,x,y):self.x=......
  • C# 连接SQLite数据库与建表
    SQLite是⼀个软件库,实现了自给自足的、无服务器的、零配置的、事务性的轻量级SQL数据库引擎。声明连接SQLite的变量Conn添加SQLite操作驱动dll引用:System.Data.SQLite.dllusingSystem.Data.SQLite;SQLiteConnectionConn;直接NuGet包搜索System.Data.SQLite......
  • 如何使用PL/SQL Developer 连接remote 数据库
    https://www.allroundautomations.com/plsqldev.html 1.下载并安装OracleInstantClient Free,light-weightandeasilyinstalledOracleDatabaselibrariesandSDKsforbuildingandconnectingclientapplicationstolocalorremoteOracleDatabases.可以通过......
  • postgresql 的 idle_session_timeout 与连接池的 max-ide-time参数
    看下面的异常:下面的错误说:terminatingconnectionduetoidle-sessiontimeout下面的这个错误说:Causedby:reactor.pool.PoolShutdownException:Poolhasbeenshutdownreactor.core.Exceptions$ErrorCallbackNotImplemented:org.springframework.dao.DataAccessResou......