7

这是我的 nginx 配置文件:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   d:/www;
        index  index.html index.htm;
    }
    location /js/api/ {
        root   D:/workspace/javascript/maplib/;
        autoindex on;
    }
}

而文件的目录是这样的:

D:/workspace/javascript/maplib
    -- v1.0
         --main.js
    -- v1.1

现在我想访问v1.0/main.jsby http://localhost/js/api/v1.0/main.js

它返回一个 404 错误。

似乎ngnix会尝试获取D:/workspace/javascript/maplib/js/api/v1.0/main.js不存在的文件。

似乎location(在url中)中的字符串路径必须存在于文件系统中。

如何修复它以满足我的要求?

顺便说一句,不仅有 js,还有一些其他类型的文件,.gif,.png,.html比如 D:/workspace/javascript/maplib/.

4

3 回答 3

19

使用alias. 参考: http: //nginx.org/en/docs/http/ngx_http_core_module.html#alias

也就是说,更换

root   D:/workspace/javascript/maplib/;

经过

alias   D:/workspace/javascript/maplib/;
于 2013-05-13T04:56:33.837 回答
0

您可以将 root 与 try_files 一起使用,只需添加 try_files 行

location /js/api/ {
    root   D:/workspace/javascript/maplib/;
    autoindex on;
    try_files $uri $uri/ =404;
}
于 2013-05-13T18:18:43.100 回答
0

为此使用rewriteinside location /js/api/,例如:

rewrite ^/js/api(.*)$ $1;
于 2013-05-13T02:15:21.000 回答