如何解决nginx从一台服务器上的两个不同目录提供文件
我的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/;
}
}
我的错误在哪里?
解决方法
最简单的解决方案是完全控制文件系统和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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。