使用 nginx 管理多个子域名

使用 nginx 管理多个子域名

我喜欢在我的 Nginx 服务器中处理不同的子域名,这是我的配置文件(部分)

server {
    listen                              80 default_server;
    listen                              443 default_server ssl;

    include                             ssl/mysite.conf;

    server_name                         default_server;
    rewrite                             ^(.*)$ https://mysite.com$1 permanent;

正如你所看到的,所有请求sub-domain.mysite.com/query重定向mysite.com/query总是在https。我希望仅当子域名不同于字符串1字符串2。 所以:

string1.mysite.com/query     --->   https://string1.mysite.com/query
foo.mysite.com/query         --->   https://mysite.com/query

答案1

您可以像 AD7six 建议的那样,为不同的主机名指定不同的服务器块。

对于您来说,我会编写 2 个服务器块,一个用于 string1.mysite.com 和 string2.mysite.com,另一个不带 server_name 过滤器以匹配所有其他请求。

像这样:

server {
    listen                              80 default_server;
    listen                              443 default_server ssl;

    include                             ssl/mysite.conf;

    rewrite                             ^(.*)$ https://mysite.com$1 permanent;
    ...
}

server {
    listen                              80;
    listen                              443 ssl;

    include                             ssl/mysite.conf;

    server_name                         string1.mysite.com string2.mysite.com;
    ...
}

server_name 指令文档非常好,可以帮助您解决此类问题。 http://nginx.org/en/docs/http/server_names.html

相关内容