【问题标题】:Nginx Routing path to serverNginx 到服务器的路由路径
【发布时间】:2013-10-01 04:33:57
【问题描述】:

我有几个网站。每个站点都有自己的“服务器”部分,其 server_name 看起来像这样

server {
   ...
   server_name siteA.example.com;
   root /var/www/siteA;
   ...
}

因此,我可以使用 URL http://siteA.example.com 来打开该网站

不过,我还需要使用 url http://example.com/siteA 来打开网站 如何做到这一点?

【问题讨论】:

    标签: nginx


    【解决方案1】:

    以下两个选项可添加到您的配置中...

    选项 1:

    server {
        ...
        server_name example.com;
        ...
        location /siteA {
            root /var/www/siteA;
            ...
        }
        location /siteB {
            root /var/www/siteB;
            ...
        }
        ...
    }
    

    选项 2:

    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

    【讨论】:

    • 优秀的大约。再澄清一点。每个服务器的配置都保存在站点可用目录中的单独文件中。例如:sites-available/siteA.conf、sites-available/siteB.conf。在上面的选项 2 中,每个 301 都会导致查找 siteX.example.com。例如,使用 localhost 来避免这种查找的最佳方法是什么。像 301 siteB.localhost$request_url 然后在 siteB.conf 中有 server_name siteB.localhost, siteB.example.com.
    • 澄清。根据使用的位置,重定向到 siteX 配置文件的最佳方法是什么?例如。 location /siteB 最终使用 siteB.conf。
    • 重定向很简单,并且遵循良好的做法。如果您真的想避免这种情况,请使用选项 1。就个人而言,我将使用选项 2,因为允许多个路由到一个资源(通常出于历史原因)可能很好,但每个资源都应该通过一个路由提供服务独自的。因此,可以从example.com/SiteA/somefile.extsiteA.example.com/somefile.ext 访问/var/www/siteA/somefile.ext,但实际上应该始终只从两者之一提供服务,并且应相应地重定向通过其他路由请求的用户。
    • 好策略。谢谢。
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2019-12-02
    • 2017-09-06
    • 2014-05-05
    • 2021-10-26
    • 2013-11-09
    相关资源
    最近更新 更多