0

假设我有一对服务器,由于部署方式,需要使用相同的nginx.conf. 其中一台服务器位于staging.someserver.com,另一台位于www.someserver.com

我想要的是一个单独的重写行或一个 if 条件,它将域上的所有内容(主要是 http 上的 www 和非 www,以及 https 上的非 www)重定向到 ,https://www.someserver.com/并且http://staging.someserver.com/重定向到https://staging.someserver.com/,但不重定向到https://www.someserver.com/. 我怎样才能做到这一点?

4

2 回答 2

1

这是 Nginx 配置的一个技巧:HTTP 块的第一个服务器块将是“默认”配置。

因此,您可以在第一个服务器块中重定向所有内容,并使用您的 www 创建另一个服务器块。配置 !

那是最好的解决方案。

于 2013-04-29T07:04:54.330 回答
-2

我不知道这是否是最好的方法,但我想出了一些办法:

server {
    listen 443 default deferred;

    # ...

    if ($host !~ (staging)|(www).*)
        rewrite ^(.*) https://www.someserver.com$1 permanent;
    }
}

server {
    listen 80;

    # ...

    if ($host !~ staging.*) {                                   
        rewrite ^(.*) https://www.someserver.com$1 permanent;    
    }                                                           
    if ($host ~ staging.*) {                                    
        rewrite ^(.*) https://staging.someserver.com$1 permanent;
    }                                                           
}
于 2012-05-23T11:41:15.540 回答