nghttp2 和nginx的实践
主要参考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的实践的更多相关文章
- Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践
Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践 Spring Boot + Nginx + Mysql 是实际工作中 ...
- 使用Docker快速部署ELK分析Nginx日志实践(二)
Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...
- 使用Docker快速部署ELK分析Nginx日志实践
原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...
- linux上安装fastdfs+nginx+ngin-module实践并解决多个异常篇
为什么选择Nginx Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主 ...
- 17、Nginx HTTPS 实践
1.HTTPS安全证书基本概述 为什么需要使用HTTPS, 因为HTTP不安全.当我们使用http网站时,会遭到劫持和篡改,如果采用https协议,那么数据在传输过程中是加密的,所以黑客无法窃取或者篡 ...
- 前后端分离项目 nginx配置实践
新项目采用前后端分离的方式开发,前后端代码打算分开部署(同机器且同域名),但打算支持后端依然可访问静态资源. 搜索nginx配置大部分都通过url前缀进行转发来做前后端分离,不适用目前项目. 说明 前 ...
- Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...
- (转)Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践
http://www.ityouknow.com/springboot/2018/03/28/dockercompose-springboot-mysql-nginx.html 我知道大家这段时间看了 ...
- docker学习实践之路[第二站]nginx镜像实践
上一篇文章中已经成功的拉取的nginx的镜像 在本篇文章中则详细介绍docker利用文件卷.断后映射然后进行nginx的配置. 输入一下命令: docker run -d --name mynginx ...
随机推荐
- Sword 内核队列二
#ifndef __GTC_FIFO_H_ #define __GTC_FIFO_H_ #ifndef GTC_MAX #define GTC_MAX(a,b) ((a) > (b) ? (a) ...
- OSPF进程号的意义及多进程OSPF
OSPF进程号的意义及多进程OSPF—吴锦霖分享 1. OSPF进程号的概念 在配置OSPF时,我们采用的是router ospf命令,在该命令后面需要加上这个OSPF进程的进程号(Proces ...
- 根据xlsx模板生成excel数据文件发送邮件代码
package mail; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...
- C++系统自己主动生成默认构造函数的情况
(1) 基类存在默认构造函数 class CBaseClass { public: CBaseClass() { m_i = 0; } private: int m_i; }; class CDriv ...
- python中导入一个需要传参的模块
最近跑实验,遇到了一个问题:由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低,必须要专门看着这个实验,啥时候跑完就手动修改运行下一个实验 ...
- vscode c++ 编译生成后,调试时无法命中断点
//test.cpp #include <stdio.h> ; void print_line(char *str) { if (str != NULL) printf("%s\ ...
- svn中status为missing的文件的处理方式
svn中status为missing的文件在每次commit时都会出现在待提交的列表里,而且它的上级文件夹前面有个红色的点,有碍观瞻,处理方式也很简单: 1.在待提交的列表里,右击该文件->de ...
- css背景图撑开盒子高度
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- cocos2dx2.x&3.x部分函数对照表
| v2.1 names | v3.0 names | | ccp | Point | | ccpNeg | Point::- | | ccpAdd | Point::+ | | ccpSub | P ...
- python3的Cryptodome
简介 python3的PyCryptodome库用于密码学,属于对PyCrypto库的扩展. 安装 Linux上安装: pip install pycryptodome Windows上安装: pip ...