./config/server.js
文件用于定义 Strapi 应用程序的服务器配置。
对 server.js
文件的更改需要重建管理面板。保存修改后的文件后,在终端中运行 yarn build
或 npm run build
来实现更改。
可用选项
./config/server.js
文件可以包含以下参数:
参数 | 说明 | 类型 | 默认 |
---|---|---|---|
host ❗️ 必需 | 主机名 | 字符串 | localhost |
port ❗️ 必需 | 服务器应在其上运行的端口。 | 整数 | 1337 |
app.keys ❗️ 必需 | 声明会话密钥(基于 Koa session),由 session 中间件用于用户和权限插件和文档插件。 | 字符串数组 | undefined |
socket | 在套接字上监听。当提供此选项时,主机和端口是装饰性的,同样,当使用此选项时,使用 url 来生成正确的 url。此选项对于运行不公开端口的服务器并在同一台机器上使用代理服务器很有用,例如 Heroku nginx buildpack | 字符串 | 整数 | /tmp/nginx.socket |
emitErrors | 当错误发生时,允许将错误发送到 koa ,以便附加自定义逻辑或使用错误报告服务。 | 布尔值 | false |
url | 服务器的公共 URL。许多不同功能都需要它(例如:重置密码、第三方登录提供商等)。还启用代理支持,如 Apache 或 Nginx,例如:https://mywebsite.com/api 。url 可以是相对的,如果是,则使用 http://${host}:${port} 作为基本 URL。但建议使用绝对 URL。 | 字符串 | '' |
proxy | 设置 koa 变量 app.proxy 。当为 true 时,代理标头字段将被信任。 | 布尔值 | false |
globalProxy | 定义在 strapi.fetch 方法内发出的所有外部请求的代理(用于许可证检查、遥测和 webhook)。如果 Strapi 项目位于正向代理后面,则使用。 | 字符串 | |
cron | Cron 配置(由 node-schedule 提供支持) | 对象 | |
cron.enabled | 启用或禁用 CRON 作业 以在特定日期安排作业。 | 布尔值 | false |
cron.tasks | 声明 CRON 作业 在特定日期运行。 | 对象 | |
dirs | Strapi 使用的不同目录的路径配置。 | 对象 | |
dirs.public | 自定义公共文件夹的路径。 | 字符串 | ./public |
webhooks.populateRelations | 启用或禁用在 webhooks 中接收填充的关系 | 布尔值 | true |
http | Strapi 使用的 http 服务器的配置 | 对象 | |
http.serverOptions | 传递给 http createServer 的选项 | http.serverOptions | {} |
配置
./config/server.js
最小配置需要 host
和 port
参数进行开发。完整配置中可以包含其他参数。
环境配置(即使用 env()
帮助程序)不需要包含所有值,只要它们存在于默认的 ./config/server.js
中即可。
任何新项目创建的默认配置至少应包含以下内容:
最小配置
js
./config/server.js
js
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
app: {
keys: env.array('APP_KEYS'),
},
})
完整配置
以下是完整配置文件的示例。并非所有这些键都是必需的(请参阅可用选项)。
js
./config/server.js
js
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
app: {
keys: env.array('APP_KEYS'),
},
socket: '/tmp/nginx.socket', // 仅在绝对需要时使用
emitErrors: false,
url: env('PUBLIC_URL', 'https://api.example.com'),
proxy: env.bool('IS_PROXIED', true),
cron: {
enabled: env.bool('CRON_ENABLED', false),
},
})