我的Web服务器的文件系统中具有以下目录结构:
-srv
+---someDir
| +---mySite
+---someOtherDir
+---yourSite
mySite
和yourSite
都可以从同一nginx
网络服务器的不同目录(浏览器地址栏中的路径)下使用,例如
http:// myServer / mySite和
http:// myServer / yourSite
我尝试在配置中有一个server
条目,其中有两个location
块(设置各不相同),但是没有一个提供预期的结果-都没有“服务器级”根条目,不是没有。例如(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/;
}
}
我的错误在哪里?
答案 0 :(得分:1)
最简单的解决方案是完全控制文件系统和URI命名空间,以便可以使用URI /path/to/root/foo/index.html
访问/foo/
中的应用程序,而/path/to/root/bar/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/
处的应用程序foo和http://example.com/bar/
处的应用程序栏进行罚款。
如果顶级目录元素的名称与顶级URI元素的名称不同,则需要在alias
块中使用location
指令。有关详细信息,请参见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。