nginx学习(十)——nginx的配置系统6之server_name

指令描述

使用上下文: server
默认值: ""
语法: server_name name ...(多个name以空格分隔)

指令作用

根据HTTP请求的header Host选择nginx配置文件里符合条件的server_name的server配置。因此,一个配置文件里可以配置多个不同域名的服务。
Server names匹配的顺序如下:

完全匹配的server_name;
后缀匹配: *.example.com;
前缀匹配: www.example.*;
正则匹配;
若前面四项都没匹配上,则根据以下顺序:

listen指令里配置了default或default_server的server;
第一个匹配上listen的server。

指令匹配顺序举例

配置文件的http域里增加:

server {
        listen 8000;
        server_name www;
        location / {
            echo "first";
        }
    }

    server {
        listen  8000;
        server_name www.example.com;
        location / {
            echo "second";
        }
    }

    server {
        listen 8000;
        server_name www.example.*;
        location / {
            echo "third";
        }
    }

    server {
        listen 8000;
        server_name ~\w+.com;
        location / {
            echo "forth";
        }
    }

    server {
        listen 8000;
        server_name ~.*example.com;
        location / {
            echo "fifth";
        }
    }
url result 说明
http://www.example.com/ second 全匹配
http://www.example.org/ third 前缀匹配
http://example.com/ forth 进入第一个正则匹配的server
http://www.baidu.com/ forth 同上
http://example.org/ first 无匹配上的server_name, 返回第一个符合的listen的server,即第一个
#在配置文件里再加入一个配置

server {
        listen 8000 default;
        server_name _;

        location / {
            echo "sixth";
        }
    }
则访问http://example.org/,返回sixth


你可能感兴趣的:(nginx)