主要参考https://bg2bkk.github.io/post/HTTP2%E7%9A%84%E5%AE%9E%E8%B7%B5%E8%BF%87%E7%A8%8B/,和https://fangpeishi.com/http2_proxy.html。

第三个挺有价值的链接是https://wzyboy.im/post/1052.html,但很多内容和上面的重复了。实际操作时,不必借鉴这个博客。

在/etc/pki/CA下创建初始文件
$ touch serial index.txt
$ echo 01 > serial

$ cd /etc/pki/CA
$ openssl genrsa -out private/cakey.pem 2048

使用req指令,通过私钥,生成自签证书
$ openssl req -new -x509 -key private/cakey.pem -out cacert.pem

为nginx server生成密钥

$ mkdir /root/data/nginx_ssl;cd /root/data/nginx_ssl
$ openssl genrsa -out nginx.key 2048

为nginx生成 证书签署请求

$ openssl req -new -key nginx.key -out nginx.csr

向CA请求证书

$ openssl ca -in nginx.csr -out nginx.crt

如果失败,可以尝试以下命令

$ openssl x509 -req -in nginx.csr -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -out nginx.crt

配置nginx
listen       3128;
......

server {
listen 8443 ssl http2;

ssl_certificate "/root/data/nginx_ssl/nginx.crt";
ssl_certificate_key "/root/data/nginx_ssl/nginx.key"

systemctl start nginx

用 lynx http://192.168.3.135:3128, 和 lynx https://192.168.3.135:8443 测试

接下来我们来配置nghttpx,yum -y install nghttp2

实际测试,发现在centos7下可以安装nghttp2的三个app,在centos6下,没法找到安装好的3个app。

nghttpd作为http2 server

http2-no-tls

nghttpd -v 8080   -n 24 --no-tls -d ~/workspace/Nginx_ABTesting/utils/html/

http2-with-tls

nghttpd -v 8080 -n 24 /usr/lib/ssl/nginx.key /usr/lib/ssl/nginx.crt -d ~/workspace/Nginx_ABTesting/utils/html/ 

实际测试发现no-tls不work。 

不关注nghttp2作为客户端的运行情况,关注nghttpx作为proxy,转向nginx后端的情况,这里主要参考开头提到的第二个链接来操作。

编辑配置文件 /etc/nghttpx/nghttpx.conf
frontend=0.0.0.0,
backend=127.0.0.1,
private-key-file=/root/data/nginx_ssl/nginx.key
certificate-file=/root/data/nginx_ssl/nginx.crt
http2-proxy=yes
errorlog-syslog=yes
workers= add-x-forwarded-for=no no-via=yes
no-ocsp=yes
#tls-proto-list=TLSv1.
tls-min-proto-version=TLSv1.
tls-max-proto-version=TLSv1.
ciphers=ECDHE+AES128

这个是通过测试的。原来配的backend的端口是8443,发现无法work。

tls-proto-list=TLSv1.2提示“deprecated”,修改为...min...和...max....
作为服务,systemctl restart nghttpx 这样启动nghttpx更合适。

最终测试: https://192.168.3.135, 135机器上,443作为nghttpx的前端,收到request,转发到3128上,nginx正好监听这个端口,处理后,把主页返回到客户端浏览器。浏览器必须
是支持http2的浏览器,chrome或者firefox。

nghttp2 和nginx的实践的更多相关文章

  1. Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践 Spring Boot + Nginx + Mysql 是实际工作中 ...

  2. 使用Docker快速部署ELK分析Nginx日志实践(二)

    Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...

  3. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  4. linux上安装fastdfs+nginx+ngin-module实践并解决多个异常篇

    为什么选择Nginx Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主 ...

  5. 17、Nginx HTTPS 实践

    1.HTTPS安全证书基本概述 为什么需要使用HTTPS, 因为HTTP不安全.当我们使用http网站时,会遭到劫持和篡改,如果采用https协议,那么数据在传输过程中是加密的,所以黑客无法窃取或者篡 ...

  6. 前后端分离项目 nginx配置实践

    新项目采用前后端分离的方式开发,前后端代码打算分开部署(同机器且同域名),但打算支持后端依然可访问静态资源. 搜索nginx配置大部分都通过url前缀进行转发来做前后端分离,不适用目前项目. 说明 前 ...

  7. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...

  8. (转)Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    http://www.ityouknow.com/springboot/2018/03/28/dockercompose-springboot-mysql-nginx.html 我知道大家这段时间看了 ...

  9. docker学习实践之路[第二站]nginx镜像实践

    上一篇文章中已经成功的拉取的nginx的镜像 在本篇文章中则详细介绍docker利用文件卷.断后映射然后进行nginx的配置. 输入一下命令: docker run -d --name mynginx ...

随机推荐

  1. 无法加载协定为“ServiceReference1.xxxxxx”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。

    原因是在web.config 文件中多次引用了“添加外部引用” <system.serviceModel> <bindings> <basicHttpBinding> ...

  2. scrapy框架Selector提取数据

    从页面中提取数据的核心技术是HTTP文本解析,在python中常用的模块处理: BeautifulSoup  非常流行的解析库,API简单,但解析的速度慢. lxml 是一套使用c语言编写的xml解析 ...

  3. Cobalt Strike DNS通讯实例

    一.域名设置 如果没有域名,可以参考另一篇博客,申请Freenom免费域名,并使用DNSPod解析 链接:https://www.cnblogs.com/ssooking/p/6364639.html ...

  4. 外网訪问XAMPP失败 解决方式 XAMPP1.8.3

    xampp 訪问出现New XAMPP security concept New XAMPP security concept: Access to the requested directory i ...

  5. React Native常用组件之ListView

    1. ListView常用属性 ScrollView 相关属性样式全部继承 dataSource ListViewDataSource 设置ListView的数据源 initialListSize n ...

  6. oracle 优化or 更换in、exists、union all几个字眼

    oracle 优化or 更换in.exists.union几个字眼.测试没有问题! 根据实际情况选择相应的语句是.假设指数,or全表扫描,in 和not in 应慎用.否则会导致全表扫描.  sele ...

  7. OraclePLSQL编程

    PL/SQL编程 pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入式sql语言,还可以定义变量和常量,允许使用条件语句和 ...

  8. Python学习笔记(二)

    标识符和关键字 1,邮箱的Python标识符是任意长度的非空字符序列(引导字符+后续字符.) python标识符必须符合两条规则--标识符区分大小写 (1)只要是unicode编码字母都可以充当引导字 ...

  9. 浅谈一下Windows下的用户权限

    大学毕业后,选择做了苹果开发,一直是使用的Mac系统,所以对Windows的基本操作忘得几乎一干二净:因为做内网穿透的需要,要用到Windows下的权限问题,所以重新研究了一下Windows设置用户权 ...

  10. Oracle导出数据EXP00106错误

    在导出dmp文件的时候(命令:exp 用户名/密码@IP/实例名  file=D:\20180910.dmp log=D:\20180910.log),遇到以下错误: 错误原因: 导出使用的是Orac ...