官方解释说明: https://nginx.org/en/docs/http/server_names.html

  1. #几种格式
  2. server {
  3. listen 80;
  4. server_name example.org www.example.org;
  5. ...
  6. }
  7. server {
  8. listen 80;
  9. server_name *.example.org;
  10. ...
  11. }
  12. server {
  13. listen 80;
  14. server_name mail.*;
  15. ...
  16. }
  17. server {
  18. listen 80;
  19. server_name ~^(?<user>.+)\.example\.net$;
  20. ...
  21. }

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

  1. 确切的名字
  2. 以星号开头的最长通配符名称,例如“ *.example.org”
  3. 以星号结尾的最长通配符名称,例如“ mail.*”
  4. 第一个匹配的正则表达式(按照在配置文件中出现的顺序)

通配符名称

通配符名称只能在名称的开头或结尾处包含星号,并且只能在点边框上。名称“www.*.example.org”“w*.example.org”无效。但是,可以使用正则表达式指定这些名称,例如“ ~^www..+.example.org$”“~^w.*.example.org$”。星号可以匹配多个名称部分。名称“.example.org”不仅匹配,www.example.org而且匹配 www.sub.example.org
“.example.org”形式的特殊通配符名称可用于匹配确切名称“example.org”和通配符名称**“
.example.org”**。

  1. 正确写法:
  2. server {
  3. listen 80;
  4. server_name *.itguigu.com www.itguigu.* ;
  5. .....
  6. }
  7. 错误写法:
  8. server {
  9. listen 80 ;
  10. server_name www.*.com www.itguigu.c* ;
  11. }
  12. * 号不能出现在域名中间,只能处于开头可末尾