nginx配置无法提供静态资产

时间:2014-04-24 09:41:07

标签: windows nginx static assets

我想通过虚拟目录提供静态资产,但我遇到了以下两个问题。

  1. 我被重定向到一个网址,其中nginx想要在文件名中添加一个斜杠和
  2. 系统认为我想要一个目录列表而不是一个文件,导致nginx做错了。
  3. error.log文件中的示例:

    2014/04/24 11:21:37 [error] 6808#6952: *15 directory index of "E:/fileserver/intranet/" is forbidden, client: 192.168.110.79, server: intraTest, request: "GET /intraStatic/employees/0C0C3E08-5056-A300-0E2C2FF5D437C6A3.png/ HTTP/1.1", host: "intraTest"
    

    我的配置文件中的代码段:

    location ~ /intraStatic/ {
        autoindex  off;
        alias  e:/fileserver/intranet/;
        break;
    }
    

    由于日志包含别名中提到的路径,我知道位置块不会被忽略,但即使文件系统权限很好并且该文件存在且未被任何内容破坏。

    由于谷歌只是回应结果,其中每一个都比以前的结果更无用,我只能希望这里的某个人可以对这个问题有所了解。

    提前感谢您的回复!

2 个答案:

答案 0 :(得分:0)

来自ngx_http_core_module:

  

如果位置由以斜杠字符结尾的前缀字符串定义,并且请求由proxy_pass,fastcgi_pass,scgi_pass,uwsgi_pass或memcached_pa​​ss之一处理,则响应URI等于此字符串的请求,但是如果没有尾部斜杠,则会将带有代码301的永久重定向返回到请求的URI,并附加斜杠。如果不需要,可以像下面这样定义URI和位置的完全匹配:

location /user/ {
    proxy_pass http://user.example.com;
}

location = /user {
    proxy_pass http://login.example.com;
}

所以试试:

location ~ /intraStatic {

答案 1 :(得分:0)

感谢大家的回复。

当我几乎沮丧地通过一个注释掉的应用程序后面的Tomcat服务器时,我突然想到使用更强力的解决方案,因为上面的建议在我的情况下似乎不起作用。 / p>

最后我重命名了文件系统文件夹并使用以下路径:

location ~ /intraStatic/ {
    autoindex  off;
    root  e:/fileserver/;
    break;
}

非常感谢您花时间帮我找到解决方案。