首页 > 系统相关 >linux环境下nginx配置http2

linux环境下nginx配置http2

时间:2023-12-22 15:12:02浏览次数:33  
标签:ssl http2 RSA openssl nginx AES128 linux SHA

由于项目需求,在nginx下支持http2协议,希望提升访问性能。

除了介绍配置过程,在文章最后会记上过程中的困惑。

准备工作

  1. nginx-1.19.2.tar.gz
  2. openssl-1.0.2r.tar.gz(必须不低于1.0.2,否则不支持http2)

以上文件上传到/usr/local目录下。

开始安装

安装nginx

# 解压openssl
> tar -zxvf openssl-1.0.2r.tar.gz

> tar -zxvf nginx-1.19.2.tar.gz
> cd nginx-1.19.2
# 必须安装ssl和http2模块,以及保证openssl版本在1.0.2及以上
> ./configure --with-http_ssl_module --with-http_v2_module --with-openssl=/usr/local/openssl-1.0.2r
> make
> make install

配置https

生成自签名证书
-- 一个key,一个crt。
配置证书
server {
       listen 443 ssl http2 default_server;
       server_name test.bi.com;

       ssl_certificate /usr/local/nginx/conf/ssl.crt;
       ssl_certificate_key /usr/local/nginx/conf/ssl.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
        ssl_prefer_server_ciphers on;

        ......

    }

访问效果

浏览器访问站点,并F2,切到网络面板,右键菜单将协议显示出来,并刷新,可协议变成了“h2”。

后记

openssl

无需升级系统中的openssl,只需在nginx编译时指定openssl的源码目录。

不生效

起初,在浏览器端h2协议一起不生效,始终是http/1.1。

冷静下来后的排查过程:

  1. 在服务器上通过curl命令测试
curl -v -k https://localhost

输入显示使用了h2协议。
image
但是,会由于curl版本低的原因,依然会使用http/1.1。
用7.61.1版本ok。

使用wireshark

一度郁闷的时候,下了抓包工具。
在ssl握手过程中,通过ALPN机制协调最张使用http/1.1还是h2。
客户端 发送 Client Hello,告诉服务端自身 是否支持 h2。
服务器 再发送 server Hello,告诉客户端最终要使用的 交互协议。

标签:ssl,http2,RSA,openssl,nginx,AES128,linux,SHA
From: https://www.cnblogs.com/zhaojz/p/17920144.html

相关文章

  • Linux OpenGL (1)——环境搭建(GLFW, glad)
    所有代码和过程都已经过测试测试环境:UbuntuWSL18.04为什么需要GLFW和glad库我粗浅的理解:opengl并没有提供一些跨平台代码的实现细节,因此,需要根据不同的平台下载一些库来填充opengl中“空虚”的函数。如何安装GLFW和glad库安装GLFW#安装GLFWsudoapt-get......
  • Nginx服务器常用参数设置
    Nginx作为一个高性能的Web服务器和反向代理,它的性能可以通过调整底层操作系统的参数来进一步优化。以下是一些常见的操作系统级别的调整,通常针对Linux系统:FileDescriptorsLimit:增加文件描述符的数量可以允许Nginx打开更多的连接。ulimit-n2048#临时设置,只影响当前会话......
  • QCN9024|Wallys DR9074-TRIBAND Now Supported by ATH11K for Enhanced Linux Compati
    QCN9024|WallysDR9074-TRIBANDNowSupportedbyATH11KforEnhancedLinuxCompatibility!WallysisthrilledtoannouncethatourDR9074-TRIBANDisnowsupportedbyATH11K.ThisnotonlyextendsitsusabilitybeyondQualcommplatformsbutopensdoorsforint......
  • 盘点Linux系统中常用的防火墙工具!
    防火墙是一种网络安全工具,它可以控制网络通信并保护系统免受网络攻击,因此Linux系统也会采用防火墙来保护自己免受攻击。那么Linux中常用的防火墙工具有哪些?以下是具体内容介绍。以下是几个常用的防火墙工具推荐:1、iptables:iptables是Linux上最常用的防火墙工具之一。......
  • Linux中大括号主要作用是什么?需要注意哪些?
    在Linux中,不同的括号有着不同的作用。那么Linux中的大括号代表什么意思?在Linux中,大括号是一种有着特定作用和用途的符号,其具有强大的扩展功能,可以帮助用户快速完成相关工具,接下来我们来看看具体的内容介绍。在Linux中,大括号用于扩展和重复命令、生成文件列表以及进行字符......
  • Linux内核在RISC-V架构下的spinlock实现
    riscv没有sev/wfe指令,当前无法在spinlock时省功耗,只能通过while循环不断检查条件。本文分析linux内核下对于spinlock的实现,具体到RISC-V体系结构。由于RISC-V体系结构下目前只是简单的实现了一个基于TAS的最基本的spinlock,本文的另一个附加任务就是分析Linux内核为各个平台下实......
  • linux下域名解析工具
    1、dig[root@hlcc_mastermysqlinit]#digwww.baidu.com;<<>>DiG9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13<<>>www.baidu.com;;globaloptions:+cmd;;Gotanswer:;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:723......
  • linux 如何删掉一些特殊字符的文件夹,比如带有空格,单引号,双引号的
    在Linux中删除包含特殊字符(如空格、单引号、双引号)的文件夹,你需要使用转义字符或引号来正确地指定文件夹名。以下是一些常用方法:使用反斜杠(\)转义特殊字符:如果文件夹名包含空格,比如MyFolder,你可以使用\来转义空格:rm-rMy\Folder/对于包含单引号或双引号的文件夹,同样......
  • nginx配置防盗链
    nginx路径下html中新建images文件夹,放入可以访问的图片。然后新建referer文件夹,放入防盗图片   server增加如下配置location~*\.(jpg|png)${roothtml;#只允许本地ip访问静态资源,其他访问返回防盗图片valid_referersnone127.0.......
  • 26k star!Linux不熟悉,快用这个帮助你
    作为一个IT从业者,熟练使用Linux是一项非常重要的能力,不过我想问问电脑前的你,你真的对Linux命令很熟悉吗?我想答案可不一定都是肯定的,说实话笔者就经常不记得改用什么命令或具体怎么用。今天我们推荐一款涵盖了大部分的Linux命令的开源项目,在GitHub已超过23KStar,它就是:linux-command......