B^B .. Oh

一群爱搞事情的小弱鸡

Verynginx + HTTP2 + HSTS 搭建教程

前言

刚刚把全站上了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

申请证书

  1. 申请的腾讯云的免费SSL证书  –>   传送门
  2. 如果有域名直接申请即可,没有域名,腾讯云 .club域名首年1元  –>   传送门
  3. 申请证书选择 免费版DVSSL证书
  4. 填写相关信息即可,如果是腾讯云够买的域名会直接发放证书,如果是其他服务商购买的需要自行添加TXT记录进行域名认证

部署证书

  1. 进入SSL证书管理,下载相应的证书
  2. 解压zip压缩包,将nginx目录下的XXXX.crtXXXX.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
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注