当前位置: 首页 > news >正文

Nginx: 配置项之server_name指令用法梳理

概述

  • 基于域名的虚拟主机,它是通过什么来进行区分不同的虚拟主机呢?
    • 可以有多个server模块通过指定不同的server_name来区分不同的那个虚拟主机
    • 可以理解成不同的一个网站域名

server_name 指令用法


1 )语法结构

  • 语法: server_name name1 name2 name3 ...;
    • 这是一个固定写法,后面可以跟多个域名
  • 示例1:server_name www.nginx.com;
  • 示例2:server_name *.nginx.org;
  • 示例3:server_name www.nginx.org *.nginx.org;

2 ) 四种写法

  • server_name www.imooc.com
  • server_name *.imooc.com 前通配
  • server_name www.imooc.* 后通配
  • server_name ~^www\.imooc\.*$ ~ 表示正则匹配

3 )实际演示

nginx.conf

http {server {listen           80;server_name      www.nginx-test.com *.nginx-test.com www.nginx-test.*;root             html/nginx-test;location / {index  index.html;}}
}
  • $ mkdir nginx-test
  • $ touch nginx-test/index.html
    <h1> test nginx</h1>
    
  • $ /opt/nginx/sbin/nginx -s reload
  • 配置 本机 hosts
    192.168.1.23    www.nginx-test.com
    192.168.1.23    news.nginx-test.com
    192.168.1.23    www.nginx-test.xy
    
  • 浏览器访问
    • http://www.nginx-test.com ✅ pass
    • http://news.nginx-test.com ✅ pass
    • http://www.nginx-test.xy ✅ pass

server_name 指令用法优先级


1 )多域名的匹配

多个域名通常定义不同的 server 块来区分

server {server_name  www.nginx.org
}server {server_name  www.nginx.*
}server {server_name  *.nginx.org
}server {server_name  ~^www\.nginx\.*$
}
  • 写了4个 server 块,或某个服务器上部署了多个虚拟主机,应该以哪个为准?

2 )匹配的优先级

  • 精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配

3 )测试

http {server {listen           80;server_name      *.nginx-test.com;root             html/nginx-test/left-match;location / {index  index.html;}}server {listen           80;server_name      ~^.*\.nginx-test\..*$;root             html/nginx-test/reg-match;location / {index  index.html;}}server {listen           80;server_name      www.nginx-test.*;root             html/nginx-test/right-match;location / {index  index.html;}}server {listen           80;server_name      www.nginx-test.com;root             html/nginx-test/all-match;location / {index  index.html;}}
}
  • $ mkdir { all-match, left-match, right-match, reg-match }

  • $ touch left-match/index.html

    <h1>left-match</h1>
    
  • $ touch reg-match/index.html

    <h1>reg-match</h1>
    
  • $ touch right-match/index.html

    <h1>right-match</h1>
    
  • $ touch all-match/index.html

    <h1>all-match</h1>
    
  • 现在,我们修改下我们的 hosts

    192.168.1.23    www.nginx-test.com
    192.168.1.23    mail.nginx-test.com
    192.168.1.23    doc.nginx-test.xy
    192.168.1.23    www.nginx-test.org
    192.168.1.23    www.nginx-test.cn
    192.168.1.23    sport.nginx-test.cc
    

浏览器访问测试

1 )访问 http://www.nginx-test.com

  • 会显示 all-match
  • 如果注释掉 all-match 相关 server 块,重新加载 nginx, 则显示 left-match

2 ) 访问 http://mail.nginx-test.com 或 http://doc.nginx-test.com

  • 会显示 left-match

3 ) 访问 http://www.nginx-test.org 或 http://www.nginx-test.cn

  • 会显示 right-match

4 ) 访问 http://sport.nginx-test.cc

  • 会显示 reg-match

http://www.mrgr.cn/news/4334.html

相关文章:

  • 什么是零拷贝?以及数据在内存中的流动途径
  • 手撕⼆叉树——堆
  • (2024)vue2+vue3学习笔记(持续更新)
  • 【精选】基于Python大型购物商城系统(京东购物商城,淘宝购物商城,拼多多购物商城爬虫系统)
  • H5,防止 h5 无限 debugger
  • 转转系统源码开发
  • 关于NetTopologySuite这个C#库的学习
  • 轮播图制作思路
  • 黑神话悟空苹果电脑可以玩吗?MacBook玩黑神话悟空游戏攻略 crossover软件永久激活码分享 crossover免费使用教程
  • 稳压二极管、肖特基二极管、TVS管、静电ESD管的区别
  • 数据结构—— 再探二叉树
  • ES高级查询Query DSL查询详解、term术语级别查询、全文检索、highlight高亮
  • 简单笔记--Qt控件的重要属性--QWidget
  • 大数据应用整理
  • 数据结构中的双向链表
  • 深入理解逻辑回归
  • JAVA学习-练习试用Java实现“路径交叉”
  • RabbitMQ(面试篇)
  • 8.21 QT
  • Vxe UI vue vxe-table 常用功能使用分享