Nginx:从给定目录中提供静态文件 - 层次太深

Nginx:从给定目录中提供静态文件 - 层次太深

我对 nginx 配置还很陌生。我在一个非常基本的问题上遇到了一些困难。我想在 /doc 上托管一些静态文件(index.html、一些图像等)。这些文件位于名为 /sites/mysite/proj/doc/ 的目录中。

问题是,使用下面的 nginx 配置,nginx 会尝试查找名为“/sites/mysite/proj/doc/doc”的目录。也许可以通过将根目录设置为 /sites/mysite/proj/ 来解决此问题,但我不想在 proj/ 目录中公开其他(非静态)资产。而且由于各种原因,我无法真正将 doc/ 目录从其所在位置移走。

我认为有一种方法可以使用重写规则来解决这种情况,但我并不真正了解所有的部分,因此在制定规则时遇到了一些困难。

rewrite ^/doc/(.*)$ /$1 permanent;

我还提供了一个在 /sites/mysite/htdocs/static/ 目录中托管文件的工作示例。

> vim locations.conf

location /static {
    root   /sites/mysite/htdocs/;
    access_log   off;
    autoindex  on;
}

location /doc {
    root   /sites/mysite/proj/doc/;
    access_log   on;
    autoindex  on;
}


2011/11/19 23:49:00 [error] 2314#0: *42 open() "/sites/mysite/proj/doc/doc" failed (2: No such file or directory), client: 100.100.100.100, server: , request: "GET /doc HTTP/1.1", host: "myhost.com"

有人知道我该如何提供这种静态内容吗?

答案1

您可以使用别名,就像这样:

location /doc {
    alias   /sites/mysite/proj/doc/;
}

http://wiki.nginx.org/HttpCoreModule#alias

相关内容