403使用nginx从VirtualBox共享文件夹中禁用静态文件(Ubuntu 10.04LTS guest,Windows 7主机)

我正在开发一个本地开发虚拟机,并试图用gunicorn和nginx作为静态资源的反向代理来testing我的站点。 该网站用user nginx;加载减去静态资源user nginx; 在nginx.conf中。 尝试单独加载静态资源会显示403 Forbidden错误。

为背景。 静态资源位于/media/sf_work下的共享文件夹中。 所有文件都由root:vboxsf拥有root:vboxsf (VirtualBox默认)。 我在系统上的用户帐户已被添加到vboxsf组,并且我可以完全访问共享文件夹。

为了比较,我尝试将nginx.conf用户更改为我的用户帐户。 在这种情况下,静态文件确实加载,但是然后主页本身给出了一个403 Forbidden错误。 所以,我尝试添加nginx用户到vboxsf组,但是然后一切都给出了一个403 Forbidden错误。 经过进一步调查,似乎如果nginx.conf用户在任何组中,它会导致403禁止。

任何想法可能会发生在这里?

UPDATE

因此,当使用我的用户帐户作为nginx用户(静态文件工作的唯一途径)时,返回403 Forbidden的网页问题与目录(目录列表被拒绝)中没有index.html文件有关。 不过,我显然不希望它列出目录; 它应该将这个请求传递给gunicorn代理。 我正在使用以下内容:

 location / { try_files $uri $uri/ @proxy } location @proxy { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_connect_timeout 10; proxy_read_timeout 10; proxy_pass http://127.0.0.1:8080; } 

这有什么不对吗?

所以,我终于解决了。 首先,nginx.conf用户必须有权访问共享文件夹,显然,这意味着我必须使用我的用户帐户。 我对此并不高兴,但这仅仅是一个开发箱,所以安全性并不是问题。

然后,我的try_files指令有问题。 回想起来,这是非常有道理的。 我正在请求/ ,那个目录实际上确实存在,但我不想要那个匹配。 所以我真正需要的是:

 try_files $uri @proxy 

然后,一切正常。