Vendure电商平台生产环境配置指南
前言
在生产环境中部署Vendure电商平台时,合理的配置对于系统的安全性、稳定性和性能至关重要。本文将详细介绍Vendure生产环境的最佳配置实践,帮助开发者构建安全可靠的电商系统。
环境变量管理
为什么使用环境变量
环境变量是管理敏感信息和环境相关配置的最佳实践。它们可以帮助我们:
- 将配置与代码分离
- 保护敏感信息(如数据库凭证、API密钥等)
- 轻松切换不同环境配置
实现方式
在Vendure项目中,可以通过process.env
访问环境变量。建议在项目根目录下创建.env
文件用于本地开发,而在生产环境中使用托管平台提供的环境变量管理功能。
const IS_DEV = process.env.APP_ENV === 'dev';
生产环境实践
- 不要将
.env
文件提交到版本控制系统 - 为不同环境(开发、测试、生产)设置不同的变量值
- 使用托管平台提供的安全存储机制
超级管理员账户安全
默认账户风险
Vendure默认提供管理员账户,这在生产环境中需要特别注意安全设置。
安全配置方案
export const config: VendureConfig = {
authOptions: {
tokenMethod: ['bearer', 'cookie'],
superadminCredentials: {
identifier: process.env.SUPERADMIN_USERNAME,
password: process.env.SUPERADMIN_PASSWORD,
},
},
// ...
};
密码安全建议
- 使用至少16位复杂密码
- 包含大小写字母、数字和特殊字符
- 定期更换密码
- 使用密码管理器生成和存储密码
API安全加固
为什么需要加固API
公开的GraphQL API可能面临以下威胁:
- 恶意复杂查询导致服务器过载
- 通过内省查询获取敏感信息
- 暴力攻击尝试
使用HardenPlugin
HardenPlugin是Vendure提供的官方安全插件,可有效防护上述威胁。
安装方式
npm install @vendure/harden-plugin
# 或
yarn add @vendure/harden-plugin
配置示例
import { HardenPlugin } from '@vendure/harden-plugin';
export const config: VendureConfig = {
plugins: [
HardenPlugin.init({
maxQueryComplexity: 500, // 限制查询复杂度
apiMode: IS_DEV ? 'dev' : 'prod', // 开发模式和生产模式不同配置
}),
]
};
关键配置项
maxQueryComplexity
:限制查询复杂度,防止DoS攻击apiMode
:生产环境禁用内省和字段建议- 深度限制:防止递归查询
ID生成策略
默认策略的问题
默认的自增整数ID存在信息泄露风险,可能暴露业务规模。
UUID策略
推荐在生产环境使用UUID作为主键:
import { UuidIdStrategy } from '@vendure/core';
export const config: VendureConfig = {
entityOptions: {
entityIdStrategy: new UuidIdStrategy(),
},
};
自定义ID策略
如需保留整数ID但增加安全性,可自定义ID策略:
class CustomIdStrategy implements EntityIdStrategy {
encodeId(primaryKey: number): string {
// 实现ID加密逻辑
}
decodeId(id: string): number {
// 实现ID解密逻辑
}
}
数据库时区设置
时区问题表现
常见问题:订单时间显示与实际时间不符,通常相差几小时。
原因分析
Vendure内部使用UTC时间,若数据库时区设置不当会导致时间转换错误。
解决方案
MySQL/MariaDB检查
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
期望结果应为00:00:00
PostgreSQL检查
show timezone;
期望结果应为UTC
或Etc/UTC
修正方法
- 修改数据库服务器配置
- 在连接字符串中指定时区
- 使用数据库管理工具调整时区设置
安全最佳实践
综合安全措施
- 启用HTTPS加密传输
- 定期更新依赖包
- 实施适当的CORS策略
- 配置防火墙规则
- 设置合理的API速率限制
监控与日志
- 记录所有管理员操作
- 监控异常登录尝试
- 设置安全警报阈值
结语
通过本文介绍的配置方案,您可以显著提升Vendure电商平台在生产环境中的安全性和稳定性。记住,安全是一个持续的过程,需要定期审查和更新安全措施。建议每季度进行一次全面的安全审计,确保系统始终处于最佳防护状态。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考