You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MERN栈EC2部署后Nginx无法访问storage目录上传图片求助

解决EC2部署MERN应用后Storage文件夹图片无法访问的问题

你的问题核心是Nginx路径映射配置错误,再加上可能的权限问题,导致上传到storage的图片没法被正确访问。我来一步步帮你搞定:

1. 修复Nginx的Location配置

你之前用root指令配置/storage/路径是错的——root会把location的前缀(也就是/storage/)拼接到你指定的路径后面。举个实际例子:

当你访问http://你的域名/storage/photo.jpg时,Nginx会去/path/to/storage/storage/photo.jpg找文件,但你的图片实际存在/path/to/storage/photo.jpg,自然找不到。

正确的做法是用alias指令,它会直接把/storage/路径映射到你指定的目录,不会额外拼接前缀。修改后的配置如下:

root /path/to/build;
location / {
    try_files $uri /index.html;
}
location /api/ {
    proxy_pass http://localhost:8080;
    # 保留你原本的其他代理配置
}
# 正确的storage路径配置
location /storage/ {
    alias /path/to/storage/;
    # 可选:添加缓存头优化图片加载体验
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

2. 确保Nginx有Storage文件夹的读取权限

EC2上Nginx一般以nginx用户运行,如果这个用户没有读取storage文件夹的权限,哪怕路径配置对了也没法访问图片。执行以下命令修复权限:

# 给storage文件夹添加读取和执行权限(让Nginx能遍历目录)
sudo chmod -R 755 /path/to/storage
# 把storage文件夹的所有者改为Nginx用户(如果你的应用是用其他用户上传的,比如ubuntu)
sudo chown -R nginx:nginx /path/to/storage

3. 验证配置并重启Nginx

修改完配置后,先验证配置是否合法:

sudo nginx -t

如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful,就可以重启Nginx让配置生效:

sudo systemctl restart nginx

做完这些步骤后,再访问你的图片应该就能正常显示了。如果还是有问题,可以查看Nginx的错误日志(/var/log/nginx/error.log),里面会有具体的错误提示帮你进一步排查。


内容的提问来源于stack exchange,提问作者Zakaria Khelifi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:23:01