我在 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