教你直接通过 nginx 反代和 https 协议快速搭建自己的博客平台
所需组件
docker、mysql、nginx
博客框架
solo:一款开源免费的 java 实现的博客平台框架,采用半社区化的设计,保持个人空间的同时增加内容的流通性,可以和 github 以及自家社区产生联动,和 github 仓库互相备份以及通过 github 账号登陆评论
lute:他家的前端 markdown 通用接口,可以让你更好的在博客后台直接编辑自己的文章
前置步骤
申请服务器:推荐腾讯云 1 核 1G1M 即可,一个月 66
申请域名:也可以使用腾讯云申请,尽量选择常见的域名后缀,这类域名一般首年不便宜,但是后面续费差的也不大。如果选乱七八糟的域名,首年虽然便宜但是续费贵到离谱
域名备案:腾讯云小程序即可,介绍的时候不要提这是博客就行了,我写的是个人学习记录
证书申请:免费的,针对域名申请后拿到两个证书就 OK 了
Docker
先拉取镜像 docker pull b3log/solo
,docker pull b3log/lute-http
博客的启动脚本可以写成脚本,方便配置好参数后手动重启和实现自动更新
docker run --detach --rm --name lute --network=host b3log/lute-http
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="数据库用户名" \
--env JDBC_PASSWORD="数据库密码" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
b3log/solo --listen_port=8080 --server_scheme=https --server_host=你的域名 --lute_http=http://localhost:8249 --server_port=(默认80和443就为空)
nginx
安装部分就省略了,直接把配置文件挂出来参考,这里设置了 80 跳转 443,全部使用 https 协议,两个证书文件放在配置文件的 conf 目录下就行了
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream backend {
server localhost:8080; # Solo 监听端口
}
server {
listen 80;
access_log off;
#填写绑定证书的域名
server_name 你的域名;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name 你的域名;
#证书文件名称
ssl_certificate 你的证书文件.crt;
#私钥文件名称
ssl_certificate_key 你的证书文件.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
proxy_pass http://backend$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
}
}
}
设置自动更新
官方文档已经很清楚了,这里不再复述。因为加了 lute 框架,记得在脚本里 solo 启动前启动 lute 就可以了
设置静态资源获取(待更新)
虽然 markdown 非常适合写博客,但是对于图片这种静态资源不友好,需要通过外链获取去显示,所以需要 nginx 去配置静态资源的储存路径和获取。但是它家的社区好像也支持图片的自动保存,不通过 nginx 配置静态资源也可以放图片
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于