自定义 Typecho & 调优 & 安全 & 加固 & 扩展
1.nginx 反向代理
由前端的 https 反向代理到后端的 http
location / {
set $site "http://192.168.1.101:8080";
proxy_pass $site;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
2.nginx 永久链接 rewrite
/article-{cid}.html
我更喜欢article-999.html这样的url结构,slug看起来有点乱,slug对于现代搜索引擎来说也并无太大的优势。
page和category数量很少,就沿用slug了。
rewrite 规则:
location /blog/ {
if (!-e $request_filename) {
rewrite ^(.*)$ /blog/index.php$1 last;
}
}
article这个规则我是配置在后端的http server,后端我用的是bt面板。
rewrite规则很简单,bt后台已经内置了typecho的配置。
3.nginx禁止sqlite文件被下载
我用的是sqlite数据库,sqlite的库文件.db是可以被直接下载的,虽然文件名很难被猜到,但如果报错了就有可能直接打印出.db文件的路径。
禁止db被下载,在后端nginx上设置.db 404就行了。
location ~ (.db)$ {
return 404;
}
其实被下载了也无所谓,db中的内容几乎都是可以被浏览到的,除非有非公开文章。
4.IP白名单
不知道typecho的安全性如何,特别是admin
目录,准备给admin
目录加一个ip白名功能,只允许我所在城市的ip登陆后台。
nginx的ip白名单无法限制到地理区域,所以只能用php写一个api获取ip地理区域白名单功能。
临时用最简单的先对付一下,只允许服务器和本机,将就用以后再说。
/admin/common.php 文件开头加一行
// ban ip 简单ip白名单
if (!in_array($_SERVER['HTTP_X_REAL_IP'], [dns_get_record("home.dns.com")[0]['ip'], "192.168.1.21"])) {
exit(http_response_code(403));
}
5.页面细节修改
注释掉由 Typecho 强力驱动
,所有博客都是强力驱动的,所以去掉。
字太小了,默认是87.5%,修改style.css文件,body font-size都改为95%,前台后台都改。
其他,比较多,记不住了。
6.升级了怎么办
我修改了很多细节,有修改的模版,有修改的程序源代码,特别是修改了很多后台部分,模版可能升级了还能兼容,直接修改代码的部分升级就很麻烦了。
修改的多,我自己都不记得修改了那些地方了。
7.测试一下emoji,
😊😂🌃
8.添加List页面
读一下数据库,生成一个分类文章list。
把数据读出来,拼接好html代码,直接修改contents
表中对于cid
行的text
字段。
https://www.goao.net/blog/list.html