本站是如何搭建的

非详细教程,自用

注册zerossl

https://app.zerossl.com/signup

需要进行谷歌reCaptcha验证,国内用户无法加载,导致无法注册,解决方法:

方法一

梯子

方法二

浏览器插件

方法来源:https://blog.azurezeng.com/recaptcha-use-in-china/

浏览器应用商店安装Header Editor,导入配置

配置:https://azurezeng.github.io/static/HE-GoogleRedirect.json

配置备份:https://djj45-1304393635.cos.ap-guangzhou.myqcloud.com/blog/HE-GoogleRedirect.json


注册登录后依次点击Develop,Generate,记下eab-kideab-hmac-key

Snipaste_2022-01-23_17-14-30

安装acme.sh

1
2
3
4
5
6
7
curl https://get.acme.sh | sh
#直接用acme.sh,方便
alias acme.sh=~/.acme.sh/acme.sh
#绑定自己的zerossl账号
acme.sh --register-account --server zerossl \
--eab-kid your-eab-kid \
--eab-hmac-key your-eab-hmac-key

Cloudflare

获取区域ID与账户ID

Snipaste_2022-01-23_17-57-37

得到CF_Account_IDCF_Zone_ID

新建自定义API令牌

Snipaste_2022-01-23_17-56-07

Snipaste_2022-01-23_17-56-24

Snipaste_2023-01-12_22-34-09

创建完得到CF_Token

设置环境变量

1
2
3
export CF_Token="xxxxxxxxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxxxxxx"

DNS解析

image-20230112223838885

申请证书

1
2
#这里申请的是根域名证书和通配符证书
acme.sh --issue --dns dns_cf -d djj45.com -d *.djj45.com

安装证书

1
2
3
4
5
6
7
8
#证书文件夹要手动创建,与nginx配置对应
acme.sh --install-cert -d djj45.com \
--key-file /var/www/ssl/key.pem \
--fullchain-file /var/www/ssl/cert.pem \
--reloadcmd "service nginx force-reload"
#查看证书
acme.sh --list
#通过acme.sh和zerossl申请的证书无法注销,申请错了再次申请即可,acme.sh会自动更新证书

卸载acme.sh

1
2
acme.sh --uninstall
rm -rf ~/.acme.sh/

Nginx配置

1
2
3
4
5
6
7
8
#安装nginx,来源https://lnmp.org/install.html
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh nginx
#查看nginx配置文件位置
nginx -t
#修改配置文件
vim /usr/local/nginx/conf/nginx.conf
#重启nginx
service nginx restart
1
2
3
4
5
6
server {                                  #这是默认的内容,不用修改,在配置文件最后的空白行新建其他server
listen 80 default_server; #默认按顺序第一个server是default_server,可不写
listen [::]:80 default_server; #ipv6
server_name _; #直接访问ip地址重定向到403页面
return 403;
}
1
2
3
4
5
6
7
8
#http://djj45.com
server {
listen 80;
server_name djj45.com; #域名,要先进行域名解析
root /var/www/html; #站点路径
index index.html; #主页,即/var/www/html/index.html
return 301 https://djj45.com$request_uri; #重定向到https,浏览器直接访问djj45.com即可
}
1
2
3
4
5
6
7
8
9
#https://djj45.com
server {
listen 443 ssl;
server_name djj45.com;
root /var/www/html;
index index.html;
ssl_certificate /var/www/ssl/cert.pem; #SSL证书位置
ssl_certificate_key /var/www/ssl/key.pem;
}
1
2
3
4
5
6
7
8
9
10
#docker服务绑定域名book.djj45.com并配置ssl
server {
listen 443 ssl;
server_name book.djj45.com;
ssl_certificate /var/www/ssl/cert.pem;
ssl_certificate_key /var/www/ssl/key.pem;
location / {
proxy_pass http://localhost:8083; #docker服务端口
}
}