前言
刚刚把全站上了HTTPS,部署了CDN。在部署CDN的时候发现有个HTTP2.0支持的选项,于是开始升级HTTP2.0
安装Verynginx
这是一个开源的nginx扩展项目,为nginx增加了很多有用的功能,自带了一些防火墙措施,而且提供了相当友好的控制界面
安装步骤:
#更新一下系统
apt update
apt upgrade && apt dist-upgrade
#安装依赖环境
apt install git wget perl make build-essential procps libreadline-dev libncurses5-dev libpcre3-dev libssl-dev
#添加nginx用户组
groupadd -r nginx && useradd -r -g nginx nginx
#下载Verynginx
git clone https://github.com/alexazhou/VeryNginx.git
#安装Verynginx
cd VeryNginx
python install.py install
启动Verynginx
#启动
sudo /opt/verynginx/openresty/nginx/sbin/nginx
#重载配置
sudo /opt/verynginx/openresty/nginx/sbin/nginx -s reload
申请证书
- 申请的腾讯云的 免费SSL证书 –> 传送门
- 如果有域名直接申请即可,没有域名,腾讯云 .club域名首年1元 –> 传送门
- 申请证书选择 免费版DVSSL证书
- 填写相关信息即可,如果是腾讯云够买的域名会直接发放证书,如果是其他服务商购买的需要自行添加 TXT记录 进行域名认证
部署证书
- 进入SSL证书管理,下载相应的证书
- 解压zip压缩包,将nginx目录下的 XXXX.crt 和 XXXX.key 上传到服务器上,假设目录为 /path/to/ssl
修改Verynginx配置文件
1、编辑 /opt/verynginx/openresty/nginx/conf/nginx.conf
2、添加一个include语句
include /opt/verynginx/verynginx/nginx_conf/in_http_block.conf;
include /opt/verynginx/verynginx/nginx_conf/sites/*.conf; #添加此行代码
server {
listen 80;
#this line shoud be include in every server block
include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;
location = / {
root html;
index index.html index.htm;
}
}
3、 创建文件夹 mkdir /opt/verynginx/verynginx/nginx_conf/sites
4、 进入该文件夹并新建 XXX.conf cd /opt/verynginx/verynginx/nginx_conf/sites && touch XXXX.conf
5、 编辑 XXXX.conf 文件内容如下:
server {
listen 443 ssl http2 fastopen=3 reuseport; #开启HTTP2.0支持并启用端口复用
server_name XXXX; #你的域名
ssl on;
ssl_certificate /path/to/ssl/XXXX.crt; #证书crt文件的路径
ssl_certificate_key /path/to/ssl/XXXX.key; #证书key文件的路径
ssl_stapling on; #开启OCSP Stapling
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 10s;
ssl_buffer_size 8k;
ssl_session_tickets on;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
#设置加密协议,TLSv1协议将于2019年被废弃,如果不用IE6老古董建议不启用
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
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';
#开启HSTS务必保证所有子域名都已经配置好HTTPS,否则删除掉includeSubdomains
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" always;
#防止点击劫持
add_header X-Frame-Options SAMEORIGIN always;
#防止XSS攻击
add_header X-XSS-Protection "1; mode=block" always;
#防止MIME探测
add_header X-Content-Type-Options nosniff;
#this line shoud be include in every server block
include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;
root /path/to/website; #网站根目录
location / {
#与普通nginx配置相同
}
}
重启Verynginx
#重载配置
sudo /opt/verynginx/openresty/nginx/sbin/nginx -s reload