使用nginx从虚拟目录服务文件
如何使用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 =
/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
解决方案要干净得多。