我的網站提高爲HTTP2.0協議,加速訪問php
1、條件linux
一、openssl的版本必須在1.0.2e及以上nginx
二、nginx的版本必須在1.9.5以上面試
2、編譯安裝redis
一、openssl 編譯安裝chrome
(1)開始ubuntu
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
注:vim
(2)查看openssl版本瀏覽器
www@TinywanAliYun: openssl version OpenSSL 1.0.2j 26 Sep 2016
232性能優化
二、從新編譯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
3、配置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; } } }
4、測試
一、測試工具,Chrome 的 Net-internals 工具 (Chrome 中經過 chrome://net-internals/#http2 能夠訪問)
二、測試結果
瀏覽器Header 請求頭變化
5、參考文章
三、HTTP協議簡介
四、nginx的http2.0性能太逆天了,HTTPS網站性能優化