我对 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/;
}