server_name 指令

语 法:server_name name ...;

默认值:server_name "";

上下文:server

设置虚拟服务器的名称,例如:

server {
    server_name example.com www.example.com;
}

第一个名称成为主服务器名称。

服务器名称可以包含一个星号(“*”)来代替名称的第一部分或最后一部分:

server {
    server_name example.com *.example.com www.example.*;
}

此类名称称为通配符名称。

上面提到的前两个名称可以合二为一:

server {
    server_name .example.com;
}

也可以在服务器名称中使用正则表达式,在名称前加上波浪号(“~”):

server {
    server_name www.example.com ~^www\d+\.example\.com$;
}

正则表达式可以包含稍后可以在其他指令中使用的捕获(0.7.40):

server {
    server_name ~^(www\.)?(.+)$;

    location / {
        root /sites/$2;
    }
}

server {
    server_name _;

    location / {
        root /sites/default;
    }
}

正则表达式中的命名捕获创建变量(0.8.25),以后可以在其他指令中使用:

server {
    server_name ~^(www\.)?(?<domain>.+)$;

    location / {
        root /sites/$domain;
    }
}

server {
    server_name _;

    location / {
        root /sites/default;
    }
}

如果指令的参数设置为“$hostname”(0.9.4),则插入机器的主机名。

也可以指定一个空的服务器名称 (0.7.11):

server {
    server_name www.example.com "";
}

它允许此服务器处理没有“Host”头字段的请求 —— 而不是默认服务器 - 对于给定的 address:port 对,这是默认设置。

在 0.8.48 之前,默认使用机器的主机名。

在按名称搜索虚拟服务器期间,如果名称匹配多个指定变体(例如,通配符名称和正则表达式匹配),将按以下优先级顺序选择第一个匹配变体:

  • 确切的名字

  • 以星号开头的最长通配符名称,例如 “*.example.com”

  • 以星号结尾的最长通配符名称,例如 “mail.*”

  • 第一个匹配的正则表达式(按照在配置文件中出现的顺序)

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号