如何在 nginx 中指定 Windows 文件路径

如何在 nginx 中指定 Windows 文件路径

我使用的是 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 别名。

相关内容