使用nginx从虚拟目录服务文件

使用nginx从虚拟目录服务文件,nginx,Nginx,如何使用NGINX从位置/foo提供静态文件(比如foo.html) 我一直在尝试,但没有成功。以下是我尝试过的: location /foo { alias foo.html; } alias类似于root指令,指定文件或目录的完整路径。有关详细信息,请参阅 例如: location /foo { alias /path/to/foo.html; } root /path/to/root; location /foo { try_files /foo.html =

如何使用NGINX从位置
/foo
提供静态文件(比如
foo.html

我一直在尝试,但没有成功。以下是我尝试过的:

location /foo {
    alias foo.html;
}

alias
类似于
root
指令,指定文件或目录的完整路径。有关详细信息,请参阅

例如:

location /foo {
    alias /path/to/foo.html;
}
root /path/to/root;

location /foo {
    try_files /foo.html =404;
}

您可以使用
try\u文件
实现相同的行为。有关详细信息,请参阅

例如:

location /foo {
    alias /path/to/foo.html;
}
root /path/to/root;

location /foo {
    try_files /foo.html =404;
}
实际上,您正在将URL从
/foo
重写为
/foo.html
,因此
重写
完全适用于以下情况:

rewrite ^/foo$ /foo.html; 
不必担心正则表达式会变慢——事实并非如此


考虑到
try\u files
方法必须进行
stat
调用(检查文件是否存在),这会使它变慢。

文件
foo.html
在哪里?在
root\u dir
中,您的意思是在
root
指令定义的根目录中,还是在由root指令定义的Nginx默认根目录中。在第一个示例中,它可以工作,但MIME类型似乎设置不正确-我的浏览器尝试下载该文件。此外,如果不为我指定完整路径,即使使用上面的
root
指令,它也无法工作。你的第二个答案确实对我有用,不需要绝对路径。前面的斜杠是键。是的,
别名
需要完整路径,
指令不相关。但是我忘记了MIME类型(很容易修复),但是
try\u files
解决方案要干净得多。