我使用的是 Windows 版的 nginx 官方版本。我想指定此配置的 Windows 版本
location /static/ {
alias /home/user/staticfiles/;
}
如何在别名指令中指定 Windows 文件路径?这可能吗?
答案1
这些答案肯定过时了。使用带正斜杠的 nginx 1.3.8 绝对路径有效。反斜杠似乎有效,但应该加倍。如果不是,那么一些,例如尾随,\"
将被按字面意思理解。
location /static/ {
# alias "C:\\foo\\bar\\...\\static\\";
alias "C:/foo/bar/.../static/";
expires 90d;
}
引号可能不是必需的,但在嵌入空格的情况下,它们似乎是个好主意。
我注意到的另一件事是,匹配 URL 和别名路径非常重要,是否以斜杠结尾——不匹配则不起作用。
答案2
如果您尝试指定类似这样的绝对路径……
location / {
alias C:\Users\SomeUser\mysite\static;
}
...然后从该位置请求文件时,您可能会在 C:\nginx\logs\error.log 中看到类似以下错误:
2011/11/11 12:53:16 [error] 6236#0: *1 open() "/cygdrive/c/nginx/C:\Users\SomeUser\mysite\static\somefile.css
在 Windows 上配置 nginx 时,请指定相对于 C:\nginx 目录的任何路径。这有效:
location / {
alias ../Users/SomeUser/mysite/static;
}
就我个人而言,我很高兴了解到这一点,因为它使我的 nginx 配置在 Windows 和 Linux 之间的可移植性比我预期的要好一些。要将 Linux 配置文件转换为适用于 Windows 的配置文件,对我来说,基本上只需:
s|/home/myname/|../Users/Myname|
答案3
对于 Windows 上的 NGINX,你必须使用此方法:
location /foo {
root C://pathtoyourfile/folder1/folder2;
}
foo
里面的实际文件夹在哪里folder2
。
答案4
似乎别名对我的 Windows 系统根本不起作用。我尝试输入
alias "c:"
但即使这样也不起作用。而且我找不到在 nginx 重新加载配置文件后输出位置的方法。所以干脆不要在 Windows 中使用 nginx 别名。