# Nginx 代理
由于 Strapi 不直接处理 SSL,并且在 "edge" 网络上托管 Node.js 服务不是一个安全的解决方案,因此建议您使用某种代理应用程序,例如 Nginx, Apache, HAProxy, Traefik 等。下面你会发现 Nginx 的一些示例配置,当然,这些配置可能不适合所有环境,你可能需要调整它们以满足您的需求。
# 配置
以下配置基于 Nginx 虚拟主机,这意味着您可以为每个域创建配置,以允许在同一端口(例如 80(HTTP)或 443(HTTPS)上为多个域提供服务。它还使用中央上游文件来存储别名,以便在群集多个 Strapi 部署时更轻松地进行管理、负载平衡和故障转移。
# Strapi 服务
为了充分利用代理的 Strapi 应用程序,应该配置 Strapi,使其能够识别上游代理。与以下配置一样,有3个匹配的示例。其他信息可以在 服务器配置 和 管理配置 文档中找到。
✏️ NOTE
这些示例使用默认的 API 前缀 /api
. 这可以更改,而无需直接修改 Nginx 配置 (请参阅 API prefix 文档).
✋ CAUTION
如果在 ./config/admin.js
或 ./config/server.js
文件中更改了 url
键,则需要使用 yarn build
或 npm run build
重新构建管理面板。
# Nginx 上游
上游块用于将别名,如 strapi
映射到 localhost:1337
。虽然在每个虚拟主机文件中定义这些文件会很有用,但如果您有多个虚拟主机文件,Nginx目前不支持在虚拟主机中加载这些内容。相反,请在 conf.d
目录中配置这些,因为这是在任何虚拟主机文件之前加载的。
在以下配置中,localhost:1337
映射到 Nginx 别名 strapi
:
# path: /etc/nginx/conf.d/upstream.conf
# Strapi server
upstream strapi {
server 127.0.0.1:1337;
}
# Nginx 虚拟主机
虚拟主机文件用于存储特定应用、服务或代理服务的配置。为了与 Strapi 一起使用,此虚拟主机文件正在处理 HTTPS 连接,并将它们代理到服务器上本地运行的 Strapi。此配置还会使用 301 重定向将所有 HTTP 请求重定向到 HTTP。
在下面的示例中,您将需要替换您的域,同样,您需要根据放置 SSL 证书的位置进行更改,或者,如果您使用的是 Let's Encrypt,则需要根据脚本放置它们的位置进行更改。另请注意,虽然下面的路径显示 sites-available
,但您需要将文件符号链接到 sites-enabled
,以便 Nginx 启用配置。
以下是 Nginx 配置的 3 个示例:
- 基于子域,如
api.example.com
- 基于API和管理员在同一子文件夹,例如
example.com/test/api
和example.com/test/admin
上的子文件夹 - 基于拆分API和管理员的子文件夹,例如
example.com/api
和example.com/dashboard
# 将主页重定向到管理面板
如果您不希望将默认的首页挂载在 /
上,则可以使用下面的示例代码创建自定义的 ./public/index.html
,以自动重定向到您的管理面板。
✋ CAUTION
此示例配置要求可在 /admin
上访问管理面板。如果您使用上述配置之一将其更改为 /dashboard
,则还需要调整此示例配置。
Path — ./public/index.html
<html>
<head>
<meta http-equiv="refresh" content="0;URL='/admin'" />
</head>
</html>