近期做了一点微小的工作

  1. 优化英语课网盘的镜像(https://hr98.tk)
  2. 服务器程序由Apache换为NGINX
  3. 添加HSTS(HTTP Strict Transport Security)


1.优化

我们大学的英语课使用360云盘作为文件共享平台.而一个多月前360云盘宣布即将关闭.

故我用闲置VPS配合开源的、基于PHP的在线文件管理器h5ai搭建了该网盘的镜像.现编辑h5ai的配置文件,以优化其使用体验:

/*使用中科大Google Fonts镜像,提高国内加载速度*/
"resources": {
        "scripts": [],
        "styles": [
            "//fonts.lug.ustc.edu.cn/css?family=Ubuntu:300,400,700%7CUbuntu+Mono:400,700"
        ]
  },
/*启用下载功能,并以zip为下载多文件时的压缩格式*/
"download": {
        "enabled": true,
        "type": "shell-zip",
        "packageName": null,
        "alwaysVisible": false
    },
/*允许显示文件信息及下载链接的二维码,但默认不显示,可在左侧栏开启*/
"info": {
        "enabled": true,
        "show": false,
        "qrcode": true,
        "qrFill": "#999",
        "qrBack": "#fff"
    },
/*以简体中文为默认语言*/
"l10n": {
        "enabled": true,
        "lang": "zh-cn",
        "useBrowserLang": false
    },
/*关闭视频及音频预览时的自动播放*/
"preview-aud": {
        "enabled": true,
        "autoplay": false,
        "types": ["aud"]
    },
"preview-vid": {
        "enabled": true,
        "autoplay": false,
        "types": ["vid-avi", "vid-flv", "vid-mkv", "vid-mov", "vid-mp4", "vid-mpg", "vid-webm"]
    },
/*不预览文本文件*/
"preview-txt": {
        "enabled": true,
        "styles": {
            "txt": 1,
            "txt-authors": 1,
            "txt-c": 3,
            "txt-cpp": 3,
            "txt-css": 3,
            "txt-diff": 1,
            "txt-go": 3,
            "txt-h": 3,
            "txt-hpp": 3,
            "txt-install": 1,
            "txt-js": 3,
            "txt-json": 3,
            "txt-less": 3,
            "txt-license": 1,
            "txt-log": 1,
            "txt-makefile": 1,
            "txt-md": 2,
            "txt-py": 3,
            "txt-rb": 3,
            "txt-readme": 1,
            "txt-rtf": 1,
            "txt-rust": 3,
            "txt-script": 3,
            "txt-xml": 1
        }
    },
/*启用搜索功能*/
"search": {
        "enabled": true,
        "advanced": true,
        "debounceTime": 300,
        "ignorecase": true
    },
/*允许以复选框选择多个文件*/
"select": {
        "enabled": true,
        "clickndrag": false,
        "checkboxes": true
    },
/*允许使用树状目录,并默认启用*/
"tree": {
        "enabled": true,
        "show": true,
        "maxSubfolders": 50,
        "naturalSort": true,
        "ignorecase": true
    }

2.服务器程序由Apache换为Nginx

systemctl stop apache2.service
apt -y remove apache*&&apt autoremove
apt update
apt install nginx

启用PHP和SSL:编辑/etc/php/7.0/fpm/php.ini,查找;cgi.fix_pathinfo=1,将其修改为cgi.fix_pathinfo=0

编辑Nginx的配置文件:

#对.php文件调用php-fpm以处理 
location ~ \.php$ { 
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
ssl_ciphers HIGH:3DES:!aNULL;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_buffer_size 16k;
ssl_session_cache none;

创建网站配置文件:

server {
    listen 80;
    server_name hr98.tk www.hr98.tk;
    #HTTP重定向至HTTPS
    rewrite ^/(.*) https://hr98.tk/$1 permanent;
} 

server {
    listen 443;
    server_name hr98.tk www.hr98.tk;
    root /var/www/hr98_tk;

    #隐式重定向至h5ai的首页文件
    index index.php /_h5ai/public/index.php;

    #启用SSL,定义证书链与私钥所在路径
    ssl on;
    ssl_certificate /etc/letsencrypt/live/hr98.tk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hr98.tk/privkey.pem;
    
    location / {
        try_files $uri $uri/ =404;
    }

    #禁止访问.ht开头的任何文件
    location ~ /\.ht {
        deny all;
    }

    #对/USTB_English目录使用密码认证,并使用.htpasswd文件保存密码
    location /USTB_English {
        auth_basic "Password required";
        auth_basic_user_file /var/www/hr98_tk/USTB_English/.htpasswd;
    }
}

完成后执行nginx -t,检查各配置文件有无错误;执行systemctl reload nginx重载配置文件


3.添加HSTS,在Qualys SSL Labs取得A+

生成DH Param:openssl dhparam 4096 -out /etc/ssl/private/dh.pem,此步骤在VPS上执行需要数十分至1时不等,建议在高性能的Linux计算机上执行.

编辑网站配置文件:

server{
    listen 443;
    #......
    ssl_dhparam /etc/ssl/hr98_tk/dh.pem;
    #添加HSTS Header,其中23328000是有效时间,以秒计;添加includeSubDomain要慎重.
    add_header Strict-Transport-Security 'max-age=23328000;includeSubDomains';
}

完成后用nginx -t检查配置文件,再执行systemctl reload nginx,不出意外的话就可在Qualys SSL Labs取得A+的评级了.

加入对话

5条评论

电子邮件地址不会被公开。

    1. @穹庐 : GitHub上的一个“基友”用这个管理托管在个人网站上的项目
      然后我就这么知道了

        1. @穹庐 : 其实,包括将GitHub称为”全球最大的同性交友网站”等,都是对信息技术行业男女比很高的一种讽刺吧…