zoukankan      html  css  js  c++  java
  • Nginx 学习笔记(二)Web 服务启用 HTTP/2

    个人网站提升为HTTP2.0协议,加速访问

    一、条件

    1、openssl的版本必须在1.0.2e及以上

    2、nginx的版本必须在1.9.5以上

    二、编译安装

    1、openssl 编译安装

    (1)开始

    wget --no-check-certificate https://www.openssl.org/source/openssl-1.0.2j.tar.gz
    tar zxvf openssl-1.0.2j.tar.gz
    cd openssl-1.0.2j
    ./config shared zlib
    make && make install
    mv /usr/bin/openssl /usr/bin/openssl.old
    mv /usr/include/openssl /usr/include/openssl.old
    ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/ssl/include/openssl /usr/include/openssl
    echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
    ldconfig -v

    注:

    (2)查看openssl版本

    www@TinywanAliYun: openssl version
    OpenSSL 1.0.2j  26 Sep 2016

    232

    2、重新编译Openresty

    (1)本次将下载最新版本:openresty-1.13.6.1.tar.gz 

    wget https://openresty.org/download/openresty-1.13.6.1.tar.gz
    tar zxvf openresty-1.13.6.1.tar.gz 
    cd openresty-1.13.6.1/

    (2)修改加载openssl 方式

    vim /home/www/build/openresty-1.13.6.1/bundle/nginx-1.13.6/auto/lib/openssl/conf
    vim /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/auto/lib/openssl/conf

    修改后内容,注意:这里是修改为两个不同目录的openssl的配置文件

    # 修改前:
    #CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
    #CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
    #CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
    #CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
    
    # 修改前:
    CORE_INCS="$CORE_INCS $OPENSSL/include"
    CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
    CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
    CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

    我这里是直接注释掉,添加新的

    (3)重新编译Openresty ,添加–with-openssl参数

    ./configure 
    --user=www 
    --group=www 
    --prefix=/usr/local/openresty 
    --with-luajit 
    --with-http_v2_module 
    --with-http_realip_module 
    --with-http_mp4_module 
    --with-stream 
    --with-http_gzip_static_module 
    --with-http_ssl_module 
    --with-openssl=/usr/local/ssl 
    --with-openssl-opt="enable-tlsext" 
    --without-http_redis2_module 
    --with-http_iconv_module 
    --with-http_stub_status_module 
    --with-http_xslt_module 
    --add-dynamic-module=/home/www/build/nginx-ts-module 
    --add-dynamic-module=/home/www/build/nginx-rtmp-module 
    --add-dynamic-module=/home/www/build/nginx-module-vts 
    --add-module=/home/www/build/ngx_cache_purge-2.3 
    ...
    ...
    make

     注意:这里只要编译就可以啦,没必要make install (会覆盖原来已经安装好的内容)

    (4)修改Nginx 二进制文件,如果Nginx服务正在运行,必须停止,否则无法覆盖

    首先备份二进制文件一份:

    cp /usr/local/openresty/nginx/sbin/nginx /usr/local/openresty/nginx/sbin/nginx.old

    覆盖旧二进制文件

    cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/objs/nginx  /usr/local/openresty/nginx/sbin/nginx

    如果动态编译了其他模块或者同一个模块的不同版本,则同上一并复制过去

    cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/objs/ngx_rtmp_module.so /usr/local/openresty/nginx/modules/ngx_rtmp_module.so
    
    cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/objs/ngx_http_ts_module.so /usr/local/openresty/nginx/modules/ngx_http_ts_module.so
    
    cp -f /home/www/build/openresty-1.13.6.1/build/nginx-1.13.6/objs/ngx_http_vhost_traffic_status_module.so /usr/local/openresty/nginx/modules/ngx_http_vhost_traffic_status_module.so

    (5)重启服务,查看配置信息

    sudo systemctl start nginx

    配置详情

    www@TinywanAliYun:~/build/openresty-1.13.6.1/build/nginx-1.13.6/objs$ sudo /usr/local/openresty/nginx/sbin/nginx -V
    nginx version: openresty/1.13.6.1
    built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 
    built with OpenSSL 1.0.2j  26 Sep 2016
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.0
    --with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib --user=www --group=www --with-http_v2_module --with-http_realip_module

    --with-http_mp4_module --with-stream --with-http_ssl_module --with-openssl=/usr/local/ssl
    --with-openssl-opt=enable-tlsext --with-http_stub_status_module --with-http_xslt_module
    --add-dynamic-module=/home/www/build/nginx-ts-module --add-dynamic-module=/home/www/build/nginx-rtmp-module
    --add-dynamic-module=/home/www/build/nginx-module-vts
    --add-dynamic-module=/home/www/build/ngx_cache_purge-2.3
    --with-stream --with-stream_ssl_module


    --user=www --group=www --with-http_v2_module
    --with-http_ssl_module --with-openssl=/usr/local/ssl --with-openssl-opt=enable-tlsext --with-http_stub_status_module --with-http_xslt_module
    --add-dynamic-module=/home/www/build/nginx-ts-module
    --add-dynamic-module=/home/www/build/nginx-rtmp-module
    --add-dynamic-module=/home/www/build/nginx-module-vts
    --add-dynamic-module=/home/www/build/ngx_cache_purge-2.3
    --with-stream --with-stream_ssl_module

    三、配置Nginx.conf

        server {
            listen       443 ssl http2;
            server_name  www.tinywan.com;
            set $root_path /home/www;
            root $root_path;
    
            ssl on;
            ssl_certificate      /etc/letsencrypt/live/www.tinywan.com/fullchain.pem;
            ssl_certificate_key  /etc/letsencrypt/live/www.tinywan.com//privkey.pem;
            server_tokens off;
    
    
            location / {
                if (!-e $request_filename) {
                    rewrite  ^(.*)$  /index.php?s=/$1  last;
                    break;
                }
            }
    }

    四、测试

    1、测试工具,Chrome 的 Net-internals 工具 (Chrome 中通过 chrome://net-internals/#http2 可以访问)

    2、测试结果

     

    浏览器Header 请求头变化

     

    五、参考文章

    1、HTTP 2.0 详细介绍

    3、HTTP协议简介

    4、nginx的http2.0性能太逆天了,HTTPS网站性能优化

    5、http2.0与http1.X的区别

    6、面试时如何优雅的谈论HTTP/1.0/1.1/2.0

    7、HTTP/2.0与HTTP/1.1协议区别

    8、nginx配置http2无效不起作用

    9、[翻译]Dropbox Web 服务启用 HTTP/2:经验和观察

    10、如何启用curl命令HTTP2支持

  • 相关阅读:
    Codeforces Round #375 (Div. 2) A. The New Year: Meeting Friends 水题
    Codeforces Round #372 (Div. 1) A. Plus and Square Root 数学题
    Codeforces Round #371 (Div. 1) C. Sonya and Problem Wihtout a Legend 贪心
    Codeforces Round #371 (Div. 1) D. Animals and Puzzle 二维倍增
    BZOJ 4706: B君的多边形 找规律
    HDU 5909 Tree Cutting 动态规划 快速沃尔什变换
    Codeforces Round #284 (Div. 1) A. Crazy Town 计算几何
    HDU 5908 Abelian Period 暴力
    HDU 5907 Find Q dp
    Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D. Generating Sets 贪心
  • 原文地址:https://www.cnblogs.com/tinywan/p/7860774.html
Copyright © 2011-2022 走看看