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.*”

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

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号