如何把 prompts.chat 放到 Nginx 或 Caddy 反向代理后面启用 HTTPS?
如何把 prompts.chat 放到 Nginx 或 Caddy 反向代理后面启用 HTTPS【免费下载链接】prompts.chatf.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.项目地址: https://gitcode.com/GitHub_Trending/aw/prompts.chat当你按照 DOCKER.md 用 Docker Compose 自建 prompts.chat 实例后容器默认把应用映射到主机4444端口见 compose.yml 中 app 服务的${PORT:-4444}:3000直接暴露 HTTP 端口不适合生产使用。DOCKER.md 的 “Security Considerations” 明确建议使用 HTTPS把 Nginx、Caddy、Traefik 这类反向代理放在应用前面。本文按该文档给出 Nginx 和 Caddy 两条代理路径前提是你已经能在本机通过http://localhost:4444访问到 prompts.chat目标是让访问方通过https://你的域名使用它。准备工作确认实例已在 4444 端口运行如果还没有实例按 DOCKER.md 的 Quick Start 启动使用预构建镜像时不加--build需要本地构建时加上git clone https://github.com/f/prompts.chat.git cd prompts.chat docker compose up -d启动后先确认应用本身可用再配置代理curl http://localhost:4444/api/healthDOCKER.md 给出的示例响应文档示例时间戳会不同{ status: healthy, timestamp: 2024-01-01T00:00:00.000Z, database: connected }看到status: healthy且database: connected后再进行下一步。同时按 DOCKER.md 的 “Production Setup” 要求为生产环境显式设置AUTH_SECRET可写入compose.yml同目录的.env文件export AUTH_SECRET$(openssl rand -base64 32)另外compose.yml 中POSTGRES_PASSWORD的默认值是prompts文档的 Security Considerations 要求生产环境修改该密码并同步更新连接字符串。方案一Nginx 反向代理需要自备 TLS 证书DOCKER.md 的 “Running Behind a Reverse Proxy” 一节给出了完整的 Nginx 配置。其中证书路径/etc/letsencrypt/live/prompts.example.com/...是文档示例值替换为你自己的域名和证书实际存放位置server_name也替换为你的域名server { listen 443 ssl http2; server_name prompts.example.com; ssl_certificate /etc/letsencrypt/live/prompts.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/prompts.example.com/privkey.pem; location / { proxy_pass http://localhost:4444; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; 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; proxy_cache_bypass $http_upgrade; } }要点说明proxy_pass http://localhost:4444指向宿主机上 docker compose 映射的端口。如果你修改过PORT环境变量compose.yml 中 app 服务的映射端口这里的4444要同步改成实际端口。文档中的Upgrade/Connection等头用于 WebSocket 类连接升级X-Forwarded-Proto让应用感知到外部是 https。这份配置本身不负责申请证书它假设/etc/letsencrypt/live/下已有你域名的fullchain.pem和privkey.pem证书的申请流程不在项目文档范围内需要按你的证书工具自行完成。方案二Caddy 反向代理配置最简如果你的域名解析已经指向这台服务器DOCKER.md 给出的 Caddyfile 只有三行prompts.example.com替换为你的域名prompts.example.com { reverse_proxy localhost:4444 }将上述内容写入 Caddy 的站点配置后重载 Caddy 即可。与 Nginx 方案不同这里不需要手动维护ssl_certificate路径。两种代理方案二选一即可不需要同时配置。验证代理是否生效在能访问该域名的客户端上执行健康检查prompts.example.com替换为你的域名curl https://prompts.example.com/api/health返回 JSON 中status为healthy、database为connected说明 HTTPS 链路已经通到应用。用浏览器打开https://prompts.example.com确认站点正常加载且地址栏是 https。代理上线后的两项安全收尾DOCKER.md 的 Security Considerations 中与本场景直接相关的两条限制暴露端口代理接管 443 后宿主机 4444 端口不再需要对外。可以在防火墙层只放行 80/443文档只给出“只暴露必要的端口”这一要求具体规则按你的系统防火墙配置。OAuth 回调地址要对上域名如果实例启用了 GitHub/Google 登录DOCKER.md 的 “Common Issues” 指出认证出问题时应“验证回调 URL 与你的域名一致”。上线后把 OAuth 应用的回调地址改为https://你的域名对应的登录/回调路径否则走 https 域名登录会失败。出问题时的排查入口沿用 DOCKER.md 的 Troubleshooting 一节# 查看应用容器日志 docker compose logs app # 查看数据库容器日志 docker compose logs db # 确认 db 服务健康状态 docker compose ps文档给出的对应关系应用容器反复重启时先看docker compose logs app入口脚本会在数据库就绪前重试最多 60 秒数据库连接错误时先docker compose ps确认db服务健康再看docker compose logs db。若代理返回 502 且上述检查都正常通常是proxy_pass/reverse_proxy指的目标与PORT实际映射端口不一致。参考完整的部署、环境变量、备份与迁移说明DOCKER.md服务定义端口映射、数据库健康检查compose.yml【免费下载链接】prompts.chatf.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.项目地址: https://gitcode.com/GitHub_Trending/aw/prompts.chat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考