nginx 在一台服务器上提供来自两个不同目录的文件
nginx serving files from two different directories on one server
我的网络服务器文件系统中有以下目录结构:
-srv
+---someDir
| +---mySite
+---someOtherDir
+---yourSite
mySite
和 yourSite
都可以从同一 nginx
网络服务器的不同 目录(浏览器地址中的路径)栏),例如
http:///myServer/mySite 和
http:///myServer/yourSite
我尝试在配置中使用一个 server
条目和两个 location
块(具有不同的设置),但 none 提供了预期的结果 - 两者都没有“服务器级别”根条目,并非没有。例如 (nginx.conf):
http {
...
server {
root /srv/;
location = /mySite {
root /srv/someDir/mySite/;
}
}
就像我说的,都是 root
和 try_files
等的不同组合
我认为应该可以有这样的东西
...
server {
location = /mySite {
root /srv/someDir/mySite/;
}
location = /yourSite {
root /srv/someDir/yourSite/;
}
}
我的错误在哪里?
最简单的解决方案是您可以完全控制文件系统和 URI 名称空间,以便可以使用 URI /foo/
和 [=14= 中的应用程序访问 /path/to/root/foo/index.html
中的应用程序] 可以使用 URI /bar/
.
访问
在这种情况下,不需要 location
块,并且 root
的值是 /path/to/root
因为文件的路径名是通过将此值与 URI 连接而成的。有关详细信息,请参阅 this document。
例如:
server {
server_name example.com;
root /path/to/root;
}
上面的服务器块将在 http://example.com/foo/
和应用程序 bar 在 http://example.com/bar/
.
处罚款应用程序 foo
如果顶级目录元素与顶级 URI 元素的名称不同,您将需要在 location
块中使用 alias
指令。有关详细信息,请参阅 this document。
例如:
server {
server_name example.com;
location /foo/ {
alias /path/to/foos/directory/;
}
location /bar/ {
alias /path/to/bars/directory/;
}
}
location
值和 alias
值都应以 /
结尾,或者都不以 /
结尾。
请注意,location
指令使用 而没有 =
运算符,它仅用于匹配单个 URI。有关详细信息,请参阅 this document。
我的网络服务器文件系统中有以下目录结构:
-srv
+---someDir
| +---mySite
+---someOtherDir
+---yourSite
mySite
和 yourSite
都可以从同一 nginx
网络服务器的不同 目录(浏览器地址中的路径)栏),例如
http:///myServer/mySite 和
http:///myServer/yourSite
我尝试在配置中使用一个 server
条目和两个 location
块(具有不同的设置),但 none 提供了预期的结果 - 两者都没有“服务器级别”根条目,并非没有。例如 (nginx.conf):
http {
...
server {
root /srv/;
location = /mySite {
root /srv/someDir/mySite/;
}
}
就像我说的,都是 root
和 try_files
等的不同组合
我认为应该可以有这样的东西
...
server {
location = /mySite {
root /srv/someDir/mySite/;
}
location = /yourSite {
root /srv/someDir/yourSite/;
}
}
我的错误在哪里?
最简单的解决方案是您可以完全控制文件系统和 URI 名称空间,以便可以使用 URI /foo/
和 [=14= 中的应用程序访问 /path/to/root/foo/index.html
中的应用程序] 可以使用 URI /bar/
.
在这种情况下,不需要 location
块,并且 root
的值是 /path/to/root
因为文件的路径名是通过将此值与 URI 连接而成的。有关详细信息,请参阅 this document。
例如:
server {
server_name example.com;
root /path/to/root;
}
上面的服务器块将在 http://example.com/foo/
和应用程序 bar 在 http://example.com/bar/
.
如果顶级目录元素与顶级 URI 元素的名称不同,您将需要在 location
块中使用 alias
指令。有关详细信息,请参阅 this document。
例如:
server {
server_name example.com;
location /foo/ {
alias /path/to/foos/directory/;
}
location /bar/ {
alias /path/to/bars/directory/;
}
}
location
值和 alias
值都应以 /
结尾,或者都不以 /
结尾。
请注意,location
指令使用 而没有 =
运算符,它仅用于匹配单个 URI。有关详细信息,请参阅 this document。