CapRover

NGINX 配置

配置自定义

虽然 CapRover 会自动管理将 HTTP 请求路由到你的应用所需的一切,但你仍可能需要手动调整一些特殊配置。例如:针对某类文件或某条路由的特殊缓存逻辑、超时参数、自定义最大请求体大小等,这些都可以通过 NGINX 进行调整。

CapRover 允许你通过完全自定义的配置模板文件来手动调整这些参数。你可以在以下三个位置调整:

  • NGINX 基础配置文件(容器内的 /etc/nginx/nginx.conf)。这是 NGINX 首先读取的文件,用于引导 NGINX 去加载其他配置文件。你可以在 Web 控制台的 settings 中手动调整该文件。
  • CapRover 配置文件(容器内的 /etc/nginx/conf.d/captain-root.conf)。当你访问 captain.root.domain.com 时,你(开发者)主要会与这份配置发生关联。通常不需要修改它,但如果有需要,你也可以在 Web 控制台 > settings 中修改。
  • 应用专属配置文件(容器内的 /etc/nginx/conf.d/captain.conf)。这里用于修改某个应用的专属设置。例如:你有一个视频上传应用,希望允许 1GB 的请求体大小,你可以在 Web 控制台 > Apps > Apps Edit 中手动修改该参数。注意:你做的任何改动只会应用到当前这个应用,其他应用仍会使用默认配置。该配置模板会应用到指向该应用的所有域名,也就是说 Captain 会为 my-app-name.captainroot.domain.com 创建一个 server block,并可能为 www.myapp.com 等其他域名创建更多 server block……

当你修改了模板之后,可以在 caprover/caprover Docker 镜像内部(docker exec -it docker_container_id /bin/sh)查看 /captain/generated/nginx 下生成的最终 NGINX 配置,以便检查最终编译结果是否符合预期,相关文件如下。注意:你无法手动修改这些生成文件,因为它们会被 Captain 覆盖。如果你要进行任何改动,应该始终在 CapRover 控制台中修改 NGINX 模板。

  • /captain/generated/nginx/nginx.conf – 生成的 NGINX 基础配置文件
  • /captain/generated/nginx/conf.d/captain-root.conf – 生成的 CapRover 配置文件
  • /captain/generated/nginx/conf.d/captain.conf – 生成的应用专属配置文件

自定义文件与目录

除了配置自定义之外,你可能还需要在 NGINX 容器里使用一些文件,例如自定义 SSL 证书、特定静态资源等。由于在 CapRover 实例中一切(包括 NGINX)都运行在独立容器里,你需要把宿主机上的目录映射到容器中。Captain 已经帮你完成了这件事:服务器上的 /captain/data/nginx-shared 目录会在 NGINX 容器内映射为 /nginx-shared。例如,你在该目录下放置了一个自定义 SSL 证书 /captain/data/nginx-shared/custom-cert.pem,那么在 NGINX 配置里引用它时应使用 /nginx-shared/custom-cert.pem

为所有应用自定义并覆盖 NGINX 配置

注意:该功能从 1.11 版本起可用。

如果你希望修改新建应用的默认 NGINX 配置,例如加入 IP 白名单或其他 NGINX 配置,可以按以下步骤操作。

1- Obtain a copy of the server-block-conf.ejs template from the CapRover GitHub repository. here

2- 创建文件 /captain/data/server-block-conf-override.ejs,将模板内容复制进去,并按需修改。 Assuming you start CapRover Docker with -v /captain:/captain (default setup)

3- 重启 CapRover 以使覆盖文件生效:docker service update --force captain-captain