在一台服务器上为来自两个不同目录的文件提供服务的nginx
我的web服务器的文件系统中有以下目录结构:在一台服务器上为来自两个不同目录的文件提供服务的nginx,nginx,nginx-config,nginx-location,Nginx,Nginx Config,Nginx Location,我的web服务器的文件系统中有以下目录结构: -srv +---someDir | +---mySite +---someOtherDir +---yourSite mySite和yourSite都可以从同一个nginxwebserver的不同目录(浏览器地址栏中的路径)中获得,例如 http://myServer/mySite 及 http://myServer/yourSite 我尝试在配置中使用两个location块(具有不同的设置)来设置一个server条目,但没有
-srv
+---someDir
| +---mySite
+---someOtherDir
+---yourSite
mySite
和yourSite
都可以从同一个nginx
webserver的不同目录(浏览器地址栏中的路径)中获得,例如
http://myServer/mySite 及
http://myServer/yourSite
我尝试在配置中使用两个location
块(具有不同的设置)来设置一个server
条目,但没有一个能够达到预期的效果-无论是使用“服务器级别”根条目还是不使用。例如(nginx.conf):
正如我所说,所有这些文件都具有不同的根文件
和try_文件的组合
等
我想应该可以有这样的东西
...
server {
location = /mySite {
root /srv/someDir/mySite/;
}
location = /yourSite {
root /srv/someDir/yourSite/;
}
}
我的错误在哪里?最简单的解决方案是完全控制文件系统和URI名称空间,因此,
/path/to/root/foo/index.html
中的应用程序可以使用URI/foo/
访问,而/path/to/root/bar/index.html中的应用程序可以使用URI/bar/
访问
在这种情况下,不需要位置
块,根
的值是/path/to/root
,因为文件的路径名是通过将此值与URI连接而构建的。有关详细信息,请参阅
例如:
server {
server_name example.com;
root /path/to/root;
}
server {
server_name example.com;
location /foo/ {
alias /path/to/foos/directory/;
}
location /bar/ {
alias /path/to/bars/directory/;
}
}
上述服务器块将在http://example.com/foo/
和http://example.com/bar/
如果顶级目录元素与顶级URI元素的名称不同,则需要在位置
块中使用别名
指令。有关详细信息,请参阅
例如:
server {
server_name example.com;
root /path/to/root;
}
server {
server_name example.com;
location /foo/ {
alias /path/to/foos/directory/;
}
location /bar/ {
alias /path/to/bars/directory/;
}
}
位置
值和别名
值均应以/
结尾,或两者均以/
结尾
请注意,location
指令使用时不带=
运算符,该运算符仅用于匹配单个URI。有关详细信息,请参阅。我不理解第一个示例,因为在服务器
块中只能有一个根
条目,这在两个应用程序中如何工作?不过,第二个例子起了作用(在我的html中调整了base href
元素之后)。感谢您为我提供了一个解决方案:-)如果两个应用程序共享同一个公共根,您只需要一个root
语句,它指向父目录。