前置:需要域名托管到 cloudflare
今天下午终于申请到了oracle服务器,所以马上配置一下域名和https的证书,刚好写个文章记录下
安装 acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc
这个时候会自动在根目录下生成 .acme.sh文件夹
以及自动安装创建crontab任务
去 cloudflare 创建token
这个主要是为了在生成证书的时候,acme.sh去检查域名的所有权,只有你有权限访问这个域名才会生成证书,程序会自动创建DNS记录检查
Cloudflare API Token 生成步骤
- 进入创建页面
- 创建自定义令牌
点击 “Create Token” → 选择 “Create Custom Token”
- 配置令牌
- Token Name: 给令牌起个描述性名称(如 “DNS Management”)
- Permissions: 选择所需权限
- 例如:Account → Account Analytics → Read
- 或 Zone → DNS → Edit
- Account Resources: 选择要作用域的账户(可选)
- Client IP Filtering: 可选,限制 IP 访问
- TTL: 设置过期时间(可选)
- 确认并创建
- 点击 “Continue to summary” 查看详情
- 点击 “Create Token”
- 保存令牌
重要:令牌只显示一次,立即复制保存到安全位置
把生成的 cloudflare token 保存到 .bashrc
export CF_Token="xxx"
export CF_Account_ID="xxx"
修改acme.sh使用letsencrypt
acme.sh 模式使用的不是这个,另外一个还要邮箱什么配置,太麻烦,我通常直接使用letsencrypt
acme.sh --set-default-ca --server letsencrypt
申请证书和安装
acme.sh --issue \
--dns dns_cf \
-d *.domain.com \
-d domain.com
申请之后进行安装
acme.sh --install-cert -d *.domain.com \
--key-file /[path]/domain.com.key \
--fullchain-file /[path]/domain.com.pem \
你可以把你的证书放到指定目录
如果直接本机安装的nginx,可以直接放到nginx目录 /etc/nginx/ssl
我使用的是docker,所以在nginx的docker-compose.yml同级目录创建一个 ssl 目录
然后把 [path] 替换成这个路径即可
docker 配置
version: "3.9"
services:
nginx:
image: nginx:latest
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./conf.d:/etc/nginx/conf.d # 配置目录
- ./ssl:/etc/nginx/ssl # 证书目录
restart: always
下面就可以在conf.d目录下创建你的配置,比如 openlist.conf
# OpenList
server {
listen 80;
listen [::]:80;
server_name openlist.domain.com;
return 301 https://$host$request_uri;
}
# HTTPS 主配置
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name openlist.domain.com;
client_max_body_size 100m;
ssl_certificate /etc/nginx/ssl/domain.com.pem;
ssl_certificate_key /etc/nginx/ssl/domain.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
location / {
proxy_pass http://172.17.0.1:5244;
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;
}
}
这样就大功告成
不过要注意 openlist.conf的 proxy_pass代理路径,要配置好
这个 http://172.17.0.1 路径可以访问到主机开放的端口,但是没找到参考文档,我在服务器上可以正常使用。
如果你的服务都是docker的话,可以创建一个公共网络,这样就不用担心路径错误





暂无评论内容