listen 后可以指定
IP:port的IP地址和端口- 仅IP(端口将默认为80)
- 仅port,将监听所有接口的这个port
- 到某个
Unix socket的路径(在服务器间转发请求的时候会用到)
在将listen的值与请求进行匹配之前,Nginx会先将listen的值中所缺省的部分补充完整。然后将优先匹配准确的IP,如果不存在完全准确匹配的IP才会匹配到0.0.0.0,如果有多个IP:port匹配度相同,Nginx将会继续检查server_name
server_name 指令
Nginx将server_name与请求头中的Host进行匹配,匹配的顺序:
优先选择第一个精确匹配到的block。
1 2 3 4 5
| server { listen 80; server_name host.example.com; ... }
|
选择以*开头的进行匹配,并优先选择最长的。
1 2 3 4 5
| server { listen 80; server_name *.example.com; ... }
|
选择以*结尾的进行匹配,并优先选择最长的。
1 2 3 4 5
| server { listen 80; server_name www.example.*; ... }
|
选择以~开头的用正则表达式进行匹配,并优先选择第一个。
1 2 3 4 5
| server { listen 80; server_name ~^(www|host).*\.example\.com$; ... }
|
如果以上规则都无法匹配,则选择default_server定义的默认的server_block(每个server_block只能有一个default_server),默认的default_server是localhost
1 2 3 4 5
| server { listen 80 default_server; server_name _; ... }
|