首先说明,Nginx
需要1.9.5
版本以上,OpenSSL
至少需要OpenSSL 1.0.2
版本。
下面升级开始升级
1. 下载解压 openssl-1.0.2h
wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz tar xf openssl-1.0.2h.tar.gz
2. 下载解压 Nginx 1.10.0
http://nginx.org/download/nginx-1.10.0.tar.gz tar xf nginx-1.10.0.tar.gz cd nginx-1.10.0
升级先备份之前的Nginx
mv /usr/local/nginx /usr/local/nginx_back
接下来就可以升级Nginx
了
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-pcre --with-http_v2_module --with-http_gunzip_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.2h
注意oepnssl
源码的路径以及必须启动http_v2
和ssl
模块,现阶段http2
只支持https
加密的网站
3. 配置 Nginx
把以前老版本Nginx
中conf
目录的下的nginx.conf
拷贝到新安装的Nginx
中的conf
目录下,同时如果有vhosts
目录的话也拷贝过去。
重点是vhosts
中的.conf
文件
内容如下:
server { listen 80; server_name laowang.me www.laowang.me; if ($host != 'laowang.me') { rewrite ^/(.*)$ https://laowang.me/$1 permanent; } rewrite /^(.*) https://$server_name/$1 permanent; index index.html index.htm index.php; root /wangzhangenmulu; access_log logs/laowang.log man; error_log logs/laowang_err.log; error_page 404 /404/index.php; listen 443 ssl http2; ssl on; ssl_certificate /etc/fullchain.pem; ssl_certificate_key /etc/privkey.pem; ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL'; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:10m; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security max-age=63072000; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; if ($scheme = http) { return 301 https://$server_name$request_uri; }
以上只是贴出了最重要的一段,至于网站源码存放路径和ssl
证书存放路径都需要更改为相应的内容。
ssl
证书可以用:Let's Encrypt
免费的
4. 测试HTTP2
chrome
可以在地址栏输入:chrome://net-internals/
选择HTTP/2
看 Negotiated Protocol
是不是h2
chrome
开发者工具也可以看
还有这个网站:https://tools.keycdn.com/http2-test
以及测试服务器安全程度:https://www.ssllabs.com/
应该是A+
的水准。