Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一台服务器上为来自两个不同目录的文件提供服务的nginx_Nginx_Nginx Config_Nginx Location - Fatal编程技术网

在一台服务器上为来自两个不同目录的文件提供服务的nginx

在一台服务器上为来自两个不同目录的文件提供服务的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条目,但没有

我的web服务器的文件系统中有以下目录结构:

-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
语句,它指向父目录。