Strapi生产环境下无法将图片上传至Cloudinary
Strapi部署到Railway后无法上传文件至Cloudinary的排查方案
核心排查方向
1. 环境变量配置问题
- Railway上的环境变量是否和本地完全一致?尤其是Cloudinary的
CLOUDINARY_NAME、CLOUDINARY_KEY、CLOUDINARY_SECRET,注意不要有多余空格,复制时带空格会直接导致认证失败。 - 检查是否设置了
STRAPI_ADMIN_BACKEND_URL,部署后这个变量需要指向Railway的公网域名,而非localhost,否则会出现跨域或路径错误。
2. Cloudinary的安全设置
- 登录Cloudinary控制台,进入Settings > Security > Allowed fetch domains,添加Railway的公网域名(如
your-project.up.railway.app),避免域名白名单限制导致上传失败。 - 确认当前API密钥拥有
upload权限(默认配置包含该权限,若手动修改过需核实)。
3. Railway与Strapi的网络配置
- 检查
config/server.js中Strapi是否监听0.0.0.0端口,正确配置示例:module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1337), app: { keys: env.array('APP_KEYS'), }, }); - 确认Railway的服务端口设置为1337(或你配置的端口),且防火墙未限制出站请求到Cloudinary的443端口(默认开放,可在Railway网络设置中确认)。
4. Strapi上传插件配置
- 检查
config/plugins.js中Cloudinary配置是否正确读取环境变量,示例配置:module.exports = ({ env }) => ({ upload: { config: { provider: 'cloudinary', providerOptions: { cloud_name: env('CLOUDINARY_NAME'), api_key: env('CLOUDINARY_KEY'), api_secret: env('CLOUDINARY_SECRET'), }, actionOptions: { upload: {}, delete: {}, }, }, }, }); - 确保部署时未硬编码本地配置值,完全依赖环境变量。
5. 日志排查
- 在Railway控制台查看Strapi运行日志,搜索
upload或cloudinary相关错误信息,比如认证失败、网络超时等,日志会直接定位问题。 - 若无明显错误,可开启Strapi调试模式:设置环境变量
DEBUG=strapi:*,重新部署后查看详细日志。
快速验证步骤
- 在Railway环境变量页面,手动重新输入Cloudinary密钥信息,避免复制粘贴的隐藏字符问题。
- 用Postman直接调用Strapi文件上传接口(
POST /api/upload),查看返回的错误信息,比后台界面操作更易定位问题。
内容的提问来源于stack exchange,提问作者Johan Garcia
相关产品推荐
相关产品推荐

