diff --git a/.gitea/workflows/deploy-frontend.yml b/.gitea/workflows/deploy-frontend.yml index 7a6cc28..f329d09 100644 --- a/.gitea/workflows/deploy-frontend.yml +++ b/.gitea/workflows/deploy-frontend.yml @@ -65,7 +65,7 @@ jobs: echo "✅ 部署完成!" echo "📁 部署路径:~/www/photography/" - echo "🌐 访问地址:http://photography.iriver.top" + echo "🌐 访问地址:https://photography.iriver.top" - name: Notify success if: success() diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..e92ecd4 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,60 @@ +# Photography Portfolio Caddyfile +# 将 https://photography.iriver.top 映射到用户目录 + +photography.iriver.top { + # 静态文件服务 + root * ~/www/photography + + # 启用文件服务器 + file_server + + # 启用 gzip 压缩 + encode gzip + + # 设置默认首页 + try_files {path} {path}/ /index.html + + # 设置静态资源缓存 + @static { + path *.css *.js *.png *.jpg *.jpeg *.gif *.svg *.woff *.woff2 *.ttf *.eot *.ico + } + header @static Cache-Control "public, max-age=31536000, immutable" + + # 设置 HTML 文件缓存 + @html { + path *.html + } + header @html Cache-Control "public, max-age=3600" + + # 安全头设置 + header { + # 防止点击劫持 + X-Frame-Options "SAMEORIGIN" + # 防止 MIME 类型嗅探 + X-Content-Type-Options "nosniff" + # XSS 保护 + X-XSS-Protection "1; mode=block" + # 推荐 HTTPS + Strict-Transport-Security "max-age=31536000; includeSubDomains" + # 隐藏服务器信息 + -Server + } + + # 日志配置 + log { + output file /var/log/caddy/photography.log { + roll_size 10MB + roll_keep 5 + } + format json + } + + # 错误页面处理 + handle_errors { + @404 { + expression {http.error.status_code} == 404 + } + rewrite @404 /404.html + file_server + } +} \ No newline at end of file diff --git a/docs/deployment/caddy-setup.md b/docs/deployment/caddy-setup.md new file mode 100644 index 0000000..e7565e6 --- /dev/null +++ b/docs/deployment/caddy-setup.md @@ -0,0 +1,103 @@ +# Caddy 配置指南 + +## 配置文件位置 + +将 `Caddyfile` 复制到服务器的 Caddy 配置目录: + +### 常见位置: +- Ubuntu/Debian: `/etc/caddy/Caddyfile` +- CentOS/RHEL: `/etc/caddy/Caddyfile` +- 用户目录: `~/Caddyfile` + +## 部署步骤 + +### 1. 上传配置文件 +```bash +# 将 Caddyfile 上传到服务器 +scp Caddyfile user@server:/etc/caddy/Caddyfile +``` + +### 2. 创建日志目录 +```bash +sudo mkdir -p /var/log/caddy +sudo chown caddy:caddy /var/log/caddy +``` + +### 3. 验证配置 +```bash +sudo caddy validate --config /etc/caddy/Caddyfile +``` + +### 4. 重新加载配置 +```bash +sudo systemctl reload caddy +``` + +### 5. 检查状态 +```bash +sudo systemctl status caddy +``` + +## 配置说明 + +### 基本功能 +- **域名**: `photography.iriver.top` +- **根目录**: `~/www/photography` +- **自动 HTTPS**: Caddy 自动获取和续期 SSL 证书 +- **文件服务**: 直接提供静态文件服务 + +### 优化功能 +- **Gzip 压缩**: 减少传输大小 +- **缓存控制**: 静态资源长期缓存,HTML 短期缓存 +- **安全头**: 防止常见安全问题 +- **错误处理**: 404 错误重定向到 404.html + +### 日志功能 +- **位置**: `/var/log/caddy/photography.log` +- **格式**: JSON 格式便于分析 +- **轮转**: 10MB 轮转,保留 5 个文件 + +## 故障排除 + +### 检查配置语法 +```bash +caddy validate --config /path/to/Caddyfile +``` + +### 查看日志 +```bash +# 系统日志 +sudo journalctl -u caddy -f + +# 应用日志 +sudo tail -f /var/log/caddy/photography.log +``` + +### 测试配置 +```bash +# 测试模式启动 +sudo caddy run --config /etc/caddy/Caddyfile +``` + +## 域名解析 + +确保域名 `photography.iriver.top` 的 DNS 记录指向服务器 IP: + +``` +A photography.iriver.top YOUR_SERVER_IP +``` + +## SSL 证书 + +Caddy 会自动: +- 获取 Let's Encrypt SSL 证书 +- 自动续期证书 +- 强制 HTTPS 重定向 + +## 性能优化 + +配置包含以下优化: +- Gzip 压缩减少带宽 +- 静态资源缓存提高加载速度 +- 安全头提高安全性 +- 错误页面友好处理 \ No newline at end of file