Nginx配置静态图片返回400 Bad Request怎么办?

Good“富水 阅读 23

大家好,我在配置Nginx静态资源时遇到个问题。我把图片放在/var/www/images目录,配置了


location /images/ {
    root /var/www;
    autoindex on;
}

但访问http://example.com/images/logo.png时总是返回400错误。已经用nginx -t检查过配置没问题,重启服务也没用。难道是权限设置不对?或者路径写错了?

我来解答 赞 3 收藏
二维码
手机扫码查看
2 条解答
迷人的玉杰
root写错了,改成alias

location /images/ {
alias /var/www/images/;
autoindex on;
}

记得检查目录权限,确保nginx用户可读,直接chmod 755 /var/www/images就够了
点赞 1
2026-02-15 05:07
闲人灏森
你这个问题我遇到过,坑爹的是Nginx的 root 指令和 alias 指令容易搞混。你现在的配置里用了 root /var/www; ,但 location /images/ 已经包含了路径前缀,实际找文件时会变成 /var/www/images/images/logo.png,多了一层目录,所以报400错误。

正确的做法是把 root 改成 alias,像这样:


location /images/ {
alias /var/www/images/;
autoindex on;
}


alias 的作用就是明确告诉Nginx这个路径是最终目录,不会再拼接 location 的路径前缀了。记得末尾的斜杠别漏了,不然还是会出问题。

另外确实也可能是权限问题,确认下 /var/www/images 目录对Nginx进程用户(一般是www-data或nginx)有读取权限,可以用 ls -l 查看,没权限的话用 chmodchown 修一下。

最后提醒一句,改完配置记得 nginx -s reload 重载服务,别直接重启,省得影响线上业务。这坑我踩过太多次了,希望你能一次搞定。
点赞 1
2026-02-14 21:03