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

Nginx新手求助:如何正确部署静态文件(尤其是图片)?

Nginx静态图片加载404问题排查与解答

我是Nginx新手,在Ubuntu系统的Vultr云服务器搭建网站时,图片始终无法正确加载,访问时返回404错误,日志提示“文件或目录不存在”。试过论坛、旧教程和Nginx官方文档都没解决,当前Nginx配置如下:

server {
        server_name lockheartdynamite.xyz ;
        root /var/www/lockheart ;
        index index.html ;
        location /image {
                autoindex on ;
                alias /home/metallic_halls/image ;
        }

        location / {
                try_files $uri $uri/ =404 ;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/lockheartdynamite.xyz/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/lockheartdynamite.xyz/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = lockheartdynamite.xyz) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80 ;
        listen [::]:80 ;
        server_name lockheartdynamite.xyz ;
    return 404; # managed by Certbot


}

我虽然大概理解location块的作用,但还有几个问题:

  • 静态文件服务是不是必须依赖服务器本地的实际文件?
  • 存放图片的目录是需要我手动通过终端/桌面创建,还是Nginx会自动创建?
  • 如果是Nginx创建的,怎么把图片放进这个目录里?

问题排查与解决

  1. 定位404核心原因
    你的location /image配置使用alias /home/metallic_halls/image,意味着访问https://lockheartdynamite.xyz/image/xxx.jpg时,Nginx会去服务器的/home/metallic_halls/image/xxx.jpg路径查找文件。请依次检查:

    • 执行ls -ld /home/metallic_halls/image确认该目录是否存在,不存在则手动创建:sudo mkdir -p /home/metallic_halls/image
    • 确保Nginx有读取该目录和文件的权限:执行sudo chown -R www-data:www-data /home/metallic_halls/image修改归属,再执行sudo chmod -R 755 /home/metallic_halls/image设置可读权限
    • 确认图片已上传至该目录,且文件名、路径与访问地址完全匹配(Linux系统区分大小写)
  2. 解答你的疑问

    • 静态文件服务完全依赖服务器本地实际存在的文件,Nginx仅负责文件的分发,不会生成或创建文件。
    • 存放图片的目录必须手动创建,Nginx不会自动生成目录。你可以通过SSH终端用mkdir命令创建,或使用SFTP工具可视化创建。
    • Nginx不会创建目录,你需要自行将图片上传至已创建的目录:可使用SFTP工具(如FileZilla)拖拽上传,或通过终端scp命令传输,示例:scp /本地图片路径/xxx.jpg 用户名@服务器IP:/home/metallic_halls/image/
  3. 额外注意事项
    修改Nginx配置后,必须重启服务生效:sudo systemctl restart nginx
    若问题仍存在,可查看详细错误日志排查:sudo tail -f /var/log/nginx/error.log,日志会明确指出无法找到的文件路径,对照检查即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:24:16