到服务器的Nginx路由路径

到服务器的Nginx路由路径,nginx,Nginx,我有几个网站。每个站点都有自己的“服务器”部分,其服务器名称如下所示 server { ... server_name siteA.example.com; root /var/www/siteA; ... } 因此,我可以使用url打开该站点 但是,我也需要使用url打开该站点 如何做到这一点?下面有两个选项可添加到您的配置中 选项1: server { ... server_name example.com; ... location

我有几个网站。每个站点都有自己的“服务器”部分,其服务器名称如下所示

server {
   ...
   server_name siteA.example.com;
   root /var/www/siteA;
   ...
}
因此,我可以使用url打开该站点

但是,我也需要使用url打开该站点
如何做到这一点?

下面有两个选项可添加到您的配置中

选项1:

server {
    ...
    server_name example.com;
    ...
    location /siteA {
        root /var/www/siteA;
        ...
    }
    location /siteB {
        root /var/www/siteB;
        ...
    }
    ...
}
server {
    ...
    server_name example.com;
    ...
    location /siteA {
        return       301 http://siteA.example.com$request_uri;
    }
    location /siteB {
        return       301 http://siteB.example.com$request_uri;
    }
    ...
}
选项2:

server {
    ...
    server_name example.com;
    ...
    location /siteA {
        root /var/www/siteA;
        ...
    }
    location /siteB {
        root /var/www/siteB;
        ...
    }
    ...
}
server {
    ...
    server_name example.com;
    ...
    location /siteA {
        return       301 http://siteA.example.com$request_uri;
    }
    location /siteB {
        return       301 http://siteB.example.com$request_uri;
    }
    ...
}

第一个选项仅从
example.com/siteA
提供服务,另外第二个选项重定向到
siteA.example.com

优秀的Dayo。再澄清一下。每个服务器的配置都保存在站点可用目录中的单独文件中。例如:站点可用/siteA.conf,站点可用/siteB.conf。在上面的选项2中,每个301都会导致对siteX.example.com的查找。例如,使用localhost来避免这种查找的最佳方法是什么。类似301,然后在siteB.conf中,服务器名为siteB.localhost,siteB.example.com.conf。根据使用的位置,重定向到siteX配置文件的最佳方式是什么?location/siteB最终使用siteB.conf。重定向很简单,遵循良好的实践。如果你真的想避免这种情况,那么就选择选项1。就我个人而言,我将使用选项2,因为虽然允许多条路由到一个资源(通常是出于历史原因)是很好的,但每个资源都应该单独通过一条路由提供服务。因此,可以从
example.com/siteA/somefile.ext
siteA.example.com/somefile.ext
访问
/var/www/siteA/somefile.ext
,但实际上应该始终从这两个路径中的一个路径提供服务,通过其他路径请求的用户应该相应地重定向。这是一个好策略。谢谢