首页
学习
活动
专区
圈层
工具
发布

ASP.NET Core 因为 Nginx 配置 Connection 为 Upgrade 导致 Kestrel 返回 400 错误

由客户端发起给服务端询问可以服务器端选择是否要升级到新协议,这个机制可以做到如客户端使用HTTP/1.1去连接服务器端,询问服务器端是否能升级到HTTP2甚至是WebSockets协议。...Upgrade” 来指示这是一个升级请求 Upgrade: protocols Upgrade 头指定一项或多项协议名,按优先级排序,以逗号分隔 一个典型的包含升级请求的例子差不多是这样的: GET...– A Blog 所说方法,配置如下 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade...http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade...如 signalr 技术,此时的配置如下 http { map $http_connection $connection_upgrade { "~*Upgrade" $http_connection

1.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Request Smuggling Via HTTP2 Cleartext

    是解决我们面临的请求走私问题的一个很有前途的解决方案,但对HTTP/1.1的支持不会很快消失,与此同时我们仍然会收到HTTP/1.1的更多惊喜 在这篇文章中,我演示了如何通过明文(h2c)连接将HTTP/1.1连接升级到鲜为人知的...Egorov(@0ang3el)的WebSocket走私研究中,他证明了当升级到WebSocket连接时,通过触发后端问题,代理将连接升级到TCP隧道时他可以保持与后端的流水线HTTP/1.1连接,这允许请求被走私...TLS-ALPN)进行协商的,它由字符串"h2"标识,这发生在我们发送第一个HTTP请求之前,然而HTTP/2也可以通过HTTP/1.1升级头启动,由字符串"h2c"标识,用于明文通信,下面是一个请求示例: GET...{ proxy_pass http://backend:9999; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade...; proxy_set_header Connection $http_connection; } location /flag { deny all; }

    1.5K10

    Nginx 作为 WebSockets 代理

    WebSocket 和HTTP协议不同,但是WebSocket中的握手和HTTP中的握手兼容,它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket。...用来将连接从HTTP升级到WebSocket的HTTP升级机制使用HTTP的Upgrade和Connection协议头。反向代理服务器在支持WebSocket方面面临着一些挑战。...如果你还没有安装node.js和npm,你可以通过以下命令安装: 对 Debian/Ubuntu 来说: sudo apt-get install nodejs npm 对 RHEL/CentOS 来说...我们希望NGINX去代理这些请求,通过下面的配置便可实现: map $http_upgrade $connection_upgrade { default upgrade; '' close...$http_upgrade; proxy_set_header Connection "Upgrade"; } } 上面的配置会使NGINX监听8020端口,并把接收到的任何请求传递给后端的

    1.6K10

    国内航空巨头如何从 NGINX 迁移至 APISIX?

    作者 | 卞弘智 本文主要介绍了航空公司互联网能力持续提升的大背景下,国内某大型航空公司移动互联网基础架构团队针对南北向网关从 NGINX 升级到 APISIX 的历程。...由于我们有大量复杂的域名配置,而且有些配置相当复杂,部分网关从 NGINX 升级到 OpenResty 时,能实现无缝衔接,只需复制配置文件即可使用。...类似的 NGINX 的配置向 APISIX 进行迁移的代码案例我们还有很多,例如在 NGINX 中 websocket 协议需要进行如下配置: proxy_set_header Upgrade $http_upgrade...proxy_set_header Connection ""Upgrade""; proxy_http_version 1.1; 而在 APISIX 就进行了封装,非常简单明了: "enable_websocket...在 APISIX 中,往往可以通过插件实现更加优雅的解决方案,例如跨域支持(cors)、WebSocket 等。

    64830

    Nginx代理WebSocket方法

    但是WebSocket中的握手和HTTP中的握手兼容, 它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket。这使得WebSocket程序可以更容易的使用现已存在的基础设施。...WebSocket协议与HTTP协议不同,但WebSocket握手与HTTP兼容,使用HTTP升级工具将连接从HTTP升级到WebSocket。...用于将连接从HTTP升级到WebSocket的HTTP升级机制使用Upgrade和Connection头。反向代理服务器在支持WebSocket时面临一些挑战。...Nginx开启WebSocket代理的配置方法如下: 1)编辑nginx.conf,在http区域内一定要添加下面配置: map $http_upgrade $connection_upgrade {...其中的规则没有做匹配,因此使用默认的,即 http_upgrade为空字符串的话,那么值就是 close。

    7K30

    WebSocket与Nginx的小秘密

    代理服务器获取流量的方式 Nginx代理的方式 Nginx如何支持WebSocket Nginx配置WebSocket方式 一、代理服务器获取流量的方式 客户端通常都会直接与Web服务器进行通信。...三、Nginx如何支持WebSocket WebSocket 和HTTP虽然是不同协议,但是两者“握手”方式兼容。...Http升级为WebSocket 因为WebSocket协议是一个hop-by-hop协议(此类头部字段只对单次转发有效。...1.map是根据客户端请求中 $http_upgrade 的值来构造改变 $connection_upgrade 的值,即根据变量 $http_upgrade 的值和{} 里规则创建新的变量 $connection_upgrade...2.HTTP的Upgrade协议头机制用于将连接从HTTP连接升级到WebSocket连接,Upgrade机制使用了Upgrade协议头和Connection协议头;为了让Nginx可以将来自客户端的Upgrade

    1.8K20
    领券