nginx 配置 http/2(h2) 和 http 在同一端口的问题

nginx 配置 http/2(h2) 和 http 在同一端口的问题

大家好,我是烤鸭:

​     这个完全是个采坑记录了。

场景说明

由于这边有个需求想加个支持 grpc 方式转发的域名。

正常的二级域名都是映射到80端口,所以也没想太多,按照这个方式加上了。

# 已有的配置
server {listen 80;server_name yyy.xx.com;# access_log logs/access.log main;location / {proxy_pass http://127.0.0.1:10086; # 此处配置http服务的ip和端口}
}# grpc 代理配置
server {listen 80 http2; # grpc方式对外暴露端口server_name xxx.xx.com;# access_log logs/access.log main;location / {grpc_pass grpc://127.0.0.1:11800; # 此处配置grpc服务的ip和端口}
}

生效之后,nginx 其他的域名访问不了了,what ???

问题排查

加的这块有什么问题呢?
有人说是因为 http2 必须建立在https之上,只能挂在 443端口,果然改成 443端口之后,其他域名就可以访问了。

事实是这样的么?

我们看下nginx 官网对 http/2 升级的说明。
https://www.nginx.com/blog/nginx-1-9-5/
在这里插入图片描述

如果您的应用程序还没有用SSL/TLS加密,那么现在正是采取这一行动的好时机。加密应用程序可保护您免受间谍和中间人攻击。一些搜索引擎甚至奖励加密网站在搜索结果中排名的提高。以下配置块将所有普通HTTP请求重定向到站点的加密版本。

要启用HTTP/2支持,只需将http2参数添加到所有监听端口中。还包括ssl参数,这是必需的,因为浏览器不支持没有加密的HTTP/2。
两句话:开启 ssl/tsl,配置http2 ,这里虽然官方demo给的端口是 443,但是说明没有说必须配置在443。

http/2 和https 到底有什么区别?浏览器如果兼容https协议,访问 http/2 就没问题。这个只是针对 client端的,如果通过程序语言,使用 http/2 的grpc 方式,仅配置 http2 就行。

在这里插入图片描述

问题原因

那如果不是 http/2 必须配置在 443端口的原因,实际原因是什么。

几年前就有人给nginx提过这个问题。
https://trac.nginx.org/nginx/ticket/808
https://trac.nginx.org/nginx/ticket/816
http/2 和 http 可以同时存在,只要不是同一个端口就行。如果是支持ssl 也可以是同一个端口。

配置 http/2 也可以两个方式,

listen port_num http2 ssl (支持HTTP/1.1和h2,通过ALPN选择协议)

listen port_num http2(仅支持h2)

由于我是服务端连接,所以选择了下边的方式。

仅支持h2就无法响应其他的协议了,看下源码更清晰。

(https://github.com/nginx/nginx/blob/9e07862d6e9d37041a42bbfa34dd1f56ed547505/src/http/ngx_http_request.c#L324-L331)
在这里插入图片描述

解决方案

仅配置 http/2 的时候选择一个和 http不同的端口。

配置 http2 ssl 的时候选择支持 https的端口。(一般就是 443)

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

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

相关文章

[css] 请描述css的权重计算规则

[css] 请描述css的权重计算规则 权重值计算 选择器 案例 权重值 !important !important Infinity 内联样式 style"…" 1000 ID #id 100 class .class 10 属性 [type‘text’] 10 伪类 :hover 10 标签 p 1 伪元素 ::first-line 1 相邻选择器、子代选择器、通配符 * &…

不同操作系统打开文件浏览器(资源管理器)的方式

windows      start . 或 explorer .Mac        open .Linux(ubuntu) nautilus .Linux KDE4 dolphin . 详细说明 转载于:https://www.cnblogs.com/mengff/p/10175767.html

FutureTask isDone 返回 false

大家好,我是烤鸭: ​ 今天看一下 FutureTask源码。好吧,其实遇到问题了,哪里不会点哪里。 伪代码 package src.executor;import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.sche…

为什么MySQL数据库要用B+树存储索引

A:为什么MySQL数据库要用B树存储索引? Hash的查找速度为O(1),而树的查找速度为O(log2n),为什么不用Hash作为数据库的存储索引呢? 树的话,无非就是前中后序遍历、二叉树、二叉搜索树、平衡二叉树&#xff0c…

[css] rgba()和opacity这两个的透明效果有什么区别呢?

[css] rgba()和opacity这两个的透明效果有什么区别呢? 1.opacity 是属性,rgba()是函数,计算之后是个属性值; 2.opacity 作用于元素和元素的内容,内容会继承元素的透明度,取值0-1; 3.rgba() 一般…

lettuce 配置域名 dns 切换

大家好,我是烤鸭: 如果你也有类似的困扰,运维告诉你,redis连接配置域名,这样出问题了,直接改dns地址就行,不需要重启服务。。。梦想是美好的,现实是残酷的。如果你使用的是 let…

[css] 怎样修改chrome记住密码后自动填充表单的黄色背景?

[css] 怎样修改chrome记住密码后自动填充表单的黄色背景? input:-webkit-autofill { -webkit-box-shadow: 0 0 3px 100px #eee inset; //改变填充背景色 }个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢…

[css] 说说你对z-index的理解

[css] 说说你对z-index的理解 层叠 就是Z轴的方向的位置,值越大离屏幕前的你越近,反之亦然。可以为负数个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通…

zuul 1.x 和gateway性能对比

大家好,我是烤鸭: 今天分享下 zuul和gateway 网关压测。 环境: windows 10 jdk 8 压测工具: wrk jmeter 数据对比 场景是仅单独转发,接口 Thread.sleep(50) jmeter 12 线程,30s zuul&#xf…

[css] 在页面中的应该使用奇数还是偶数的字体?为什么呢?

[css] 在页面中的应该使用奇数还是偶数的字体?为什么呢? 常用偶数号字体,但奇数号字体也没关系,例如 知乎正文使用15px字体,豆瓣电影使用13px字体UI设计师导出的设计稿一般都是偶数号字体偶数字号容易和页面其他标签的其他属性形成比例关系Windows 自带的…

redisson 大量ping操作,导致 tps过高

大家好,我是烤鸭: 这个问题有点奇怪,新服务上线,redis tps居高不下,还都是ping命令。 环境: 服务 : 280台,redis集群:12主24从 问题 由于服务刚上线,还没…

关于-编码进阶

中国电脑的windows 的默认编码是gbk. "记事本"是gbk, 和windows的编码一样.linux 的默认编码是utf-8苹果OS的默认编码是utf-8.str 字符串在内部的默认编码是 unicode # 英文str: 表现形式alex内部编码: 字符串str-> unicodebytes:表新形式 balex      …

PMP 学习总结

大家好,我是烤鸭: PMP终于考过了。成绩出了一个月了,一直想写一篇总结但没下笔,主要原因最近有点忙(太懒了)。考试的内容是基于第6版的。 晒个证书 证书上没写等级,一般都宣称5A过(其实我是 4A1T过的)。 学习过程…

[css] 你有用过CSS预处理器吗?喜欢用哪个?原理是什么?

[css] 你有用过CSS预处理器吗?喜欢用哪个?原理是什么? 它能让你的CSS具备更加简洁、适应性更强、可读性更强、层级关系更加明显、更易于代码的维护等诸多好处。 CSS预处理器种类繁多,目前Sass、Less、用的比较多。 使用功能&…

处理器映射器(HandlerMapping)及处理器适配器(HandlerAdapter)详解(一)

非注解 处理器映射器 和 处理器适配器 处理器映射器&#xff1a; 第一种: BeanNameUrlHandlerMapping <!-- 配置Handler --> <bean id"userController1" name"/queryUsers.action" class"com.bjxb.ssm.controller.UserController" />…

Gateway Sentinel 做网关降级/流控,转发header和cookie

大家好&#xff0c;我是烤鸭&#xff1a; Springcloud Gateway 使用 Sentinel 流量控制。 环境 springcloud-gateway的网关应用&#xff0c;springboot的服务&#xff0c;nacos作为注册中心 sentinel-dashboard-1.8.2 最新版下载地址&#xff1a; https://github.com/aliba…

[css] 说说CSS的优先级是如何计算的?

[css] 说说CSS的优先级是如何计算的&#xff1f; 选择器种类严格来讲&#xff0c;选择器的种类可以分为三种&#xff1a;标签名选择器、类选择器和ID选择器。而所谓的后代选择器和群组选择器只不过是对前三种选择器的扩展应用。而 在标签内写入 style"" 的方式&…

django后台数据管理admin设置代码

新建admin用户 createsuperuser 设定好用户名&#xff0c;邮箱&#xff0c;密码 设置setting LANGUAGE_CODE zh-hansTIME_ZONE Asia/ShanghaiUSE_I18N TrueUSE_L10N TrueUSE_TZ False 在写好的users的app下修改admin.py # -*- coding: utf-8 -*- from __future__ import u…

rocketmq 初探(一)

大家好&#xff0c;我是烤鸭&#xff1a; 今天看下rocketmq。这篇主要是简单介绍下 rocketmq以及idea 本地调试 rocketmq。 项目架构 感兴趣的可以下载源码看下。 https://github.com/apache/rocketmq 项目结构图。 rocketmq-acl: acl 秘钥方式的鉴权&#xff0c;用在bro…

[css] 说说浏览器解析CSS选择器的过程?

[css] 说说浏览器解析CSS选择器的过程&#xff1f; 按照从上到下&#xff0c;从右到左的顺序解析。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题