nginx *2148“/dev/shm/screenshots/”目录索引被禁止

nginx *2148“/dev/shm/screenshots/”目录索引被禁止

我在 nginx 的某些位置配置上遇到了一些问题,这是我的配置文件:

user  dev-ci;

location ~* /img/screenshots/ {
    alias /dev/shm/screenshots/;
}

# other location with root and proxing to apache currently working propertly

我用浏览器的请求是:

http://URL/img/screenshots/4336.jpg?id=85574

我的 nginx 日志是:

2012/04/23 08:49:40 [error] 13916#0: *2148 directory index of "/dev/shm/screenshots/" is forbidden, client: *.*.*.5, server: development, request: "GET /img/screenshots/4336.jpg/?id=85574 HTTP/1.1", host: "****.amazonaws.com:2000"

从目录 /dev/shm/screenshots/ 执行我的 ls -la :

drwxrwxrwx  3 dev-ci dev-ci   80 2012-04-23 08:54 .
drwxrwxrwt 11 root   root    260 2012-04-23 07:27 ..
-rw-r--r--  1 dev-ci dev-ci 7450 2012-04-23 08:54 4336.jpg
drwxrwxrwx  2 root   root     40 2012-04-23 07:25 errors

运行的nginx用户是:dev-ci(这里我们可以看到ps aux | grep nginx)

root      1231  0.0  0.0  22052  1432 ?        Ss   07:25   0:00 nginx: master process /usr/local/nginx/sbin/nginx
dev-ci   13916  0.0  0.0  22448  1760 ?        S    08:48   0:00 nginx: worker process      

知道为什么不工作吗?我直接向 nginx 发送了 403 Forbidden 错误,因此第一个位置工作正常,但别名不正确。nginx 进程的用户名与文件相同,目录的用户名是 777,我尝试将所有者和组更改为 dev-ci 用户,结果相同。我需要一个好主意,而且要快...

谢谢!

答案1

您没有正确使用位置 - 看起来您正在尝试不正确地使用正则表达式。

location /img/screenshots/ {
    alias /dev/shm/screenshots/;
}

这应该可以正常工作。

如需进一步参考,请参阅http://wiki.nginx.org/HttpCoreModule#alias

相关内容