Nginx Conf 之 server_name

基于名称

格式: server_name name01 name02 …

通配符

在 name 中可以使用通配符 *,但通配符只能用在由三段字符串组成的名称的首段或尾端,或者由两端字符串组成的名称的尾端,如:server_name ~^www\d+\.myserver\.com$; server_name ~^www\.(.+)\.com$;

第一个匹配 www.myserver.com 成功,在其 server 块内,可以通过 $1 引用到 myserver

匹配优先级

被多个不同匹配方式匹配成功

优先级如下:
1. 精准匹配;
2. 通配符在开始时的 server_name;
3. 通配符在结尾时的 server_name;
4. 正则匹配

在上面的四种方式中,如果 server_name 被处于同一优先级的匹配方式多次匹配,则排在前面的处理此次请求。

基于 IP

添加别名(label)

Linux 操作系统支持 IP 别名的添加。匹配基于 IP 的虚拟主机, 即为 Nginx 服务器提供的每台虚拟主机配置一个不同的 IP,因此需要将网卡设置为同时能够监听多个 IP 地址。在 Linux 平台可以使用 ifconfig 工具为同一块网卡添加对个 IP 别名(label)。

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.199.153  netmask 255.255.255.0  broadcast 192.168.199.255
        inet6 fe80::21c:42ff:fea5:5205  prefixlen 64  scopeid 0x20<link>
        ether 00:1c:42:a5:52:05  txqueuelen 1000  (Ethernet)
        RX packets 276486  bytes 292058222 (278.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 59955  bytes 6438684 (6.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

执行

// 注意:CentOS 7 使用 iproute2 替代了 ifconfig,但会兼容 ifconfig
sudo ip addr add 192.168.199.45/24 dev eth0 label eth0:01
sudo ifconfig eth0:0 192.168.199.3 netmask 255.255.155.0 up

结果

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.199.153  netmask 255.255.255.0  broadcast 192.168.199.255
        inet6 fe80::21c:42ff:fea5:5205  prefixlen 64  scopeid 0x20<link>
        ether 00:1c:42:a5:52:05  txqueuelen 1000  (Ethernet)
        RX packets 277641  bytes 292188368 (278.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60427  bytes 6489051 (6.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.199.3  netmask 255.255.255.0  broadcast 192.168.199.255
        ether 00:1c:42:a5:52:05  txqueuelen 1000  (Ethernet)

eth0:01: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.199.45  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 00:1c:42:a5:52:05  txqueuelen 1000  (Ethernet)

另外还有如下方式添加网卡别名:

vi /etc/sysconfig/network-scripts/ifcfg-【网卡名】

添加如下内容:

BOOTPROTO=none
DEVICE=enp0s17     #要配置的网卡名称

##以下为多IP配置方式
IPADDR=192.168.1.10 #要设置的ip1
PREFIX=24           ##要设置的ip的子网掩码
IPADDR1=10.168.1.11 #要设置的ip2
PREFIX1=24
IPADDR2=40.168.1.12 #要设置的ip3
PREFIX2=24
IPADDR3=70.168.1.13 #要设置的ip4
PREFIX3=24

或者建立单独的配置文件

vi /etc/sysconfig/network-scripts/ifcfg-[dev]:[label]

添加

DEVICE=eno167777336:01 #和配置文件名保持一致 
IPADDR=192.168.1.10    #要设置的ip1
PREFIX=24              #要设置的ip的子网掩码

最后重启网络

systemctl restart network

查看是否生效

ip addr show
ifconfig

配置

语法和基于名称的配置是一样的如下

server {
    listen 80;
    server_name 192.168.199.45;
    ...
}

server {
    listen 80;
    server_name 192.168.199.3;
    ...
}

经过上面的配置,来自 192.168.199.45 的前端请求将由第一个虚拟主机处理;来自 192.168.199.3 前端的请求将由第二个虚拟主机处理

猜你喜欢

转载自blog.csdn.net/kaiyuanheshang/article/details/82656325