Nginx开发【Nginx虚拟主机和域名解析】

news2024/10/6 16:28:05

03 【Nginx虚拟主机和域名解析】

虚拟主机使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每一台虚拟主机都具有独立的域名,具有完整的Internet服务器(WWW、FTP、Email等)功能,虚拟主机之间完全独立,并可由用户自行管理,在外界看来,每一台虚拟主机和一台独立的主机完全一样。

域名解析就是域名到IP地址的转换过程,IP地址是网路上标识站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址,域名的解析工作由DNS服务器完成。

1.域名、dns、ip地址的关系

  • 域名是相对网站来说的,IP是相对网络来说的。当输入一个域名的时候,网页是如何做出反应的?

输入域名---->域名解析服务器(dns)解析成ip地址—>访问IP地址—>完成访问的内容—>返回信息。

  • Internet上的计算机IP是唯一的,一个IP地址对应一个计算机。

一台计算机上面可以有很多个服务,也就是一个ip地址对应了很多个域名,即一个计算机上有很多网站。

IP地址和DNS地址的区别

IP地址是指单个主机的唯一IP地址,而DNS服务器地址是用于域名解析的地址。

一个是私网地址,一个是公网地址;

一个作为主机的逻辑标志,一个作为域名解析服务器的访问地址。

IP地址

IP,就是Internet Protocol的缩写,是一种通信协议,我们用的因特网基本是IP网组成的。

IP地址就是因特网上的某个设备的一个编号。

IP地址一般由网络号,主机号,掩码来组成。

IP网络上有很多路由器,路由器之间转发、通信都是只认这个IP地址,类似什么哪?就好像你寄包裹,你的写上发件人地址,你的姓名,收件人地址,收件人姓名。

这个发件人地址就是你电脑的IP的网络号,你的姓名就是你的主机号。

收件人的地址就是你要访问的IP的网络号,收件人的姓名就是访问IP的主机号。

现在还有了更复杂的IPV6,还有IPV9。

DNS是什么?

我们访问因特网必须知道对端的IP地址,可是我们访问网站一般只知道域名啊,怎么办?

这时候DNS就有用处了,电脑先访问DNS服务器,查找域名对应的IP,于是,你的电脑就知道要发包到IP地址了。

2.http协议

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:

image-20220823112632146

客户端与服务器的数据交互的流程:

1)首先客户机与服务器需要建立TCP连接。只要单击某个超级链接,HTTP的工作开始,下图是TCP连接流程。

image-20220823112651941

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容,例如返回一个HTML的文本。

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

3.虚拟主机原理

虚拟主机是为了在同一台物理机器上运行多个不同的网站,提高资源利用率引入的技术。

一般的web服务器一个ip地址的80端口只能正确对应一个网站。web服务器在不使用多个ip地址和端口的情况下,如果需要支持多个相对独立的网站就需要一种机制来分辨同一个ip地址上的不同网站的请求,这就出现了主机头绑定的方法。简单的说就是,将不同的网站空间对应不同的域名,以连接请求中的域名字段来分发和应答正确的对应空间的文件执行结果。举个例子来说,一台服务器ip地址为192.168.8.101,有两个域名和对应的空间在这台服务器上,使用的都是192.168.8.101的80端口来提供服务。如果只是简单的将两个域名A和B的域名记录解析到这个ip地址,那么web服务器在收到任何请求时反馈的都会是同一个网站的信息,这显然达不到要求。接下来我们使用主机头绑定域名A和B到他们对应的空间文件夹C和D。当含有域名A的web请求信息到达192.168.8.101时,web服务器将执行它对应的空间C中的首页文件,并返回给客户端,含有域名B的web请求信息同理,web服务器将执行它对应的空间D中的首页文件,并返回给客户端,所以在使用主机头绑定功能后就不能使用ip地址访问其上的任何网站了,因为请求信息中不存在域名信息,所以会出错。

4.使用host文件解析域名

image-20230805180808945

修改完成后,访问虚拟机的ip解析的域名

image-20230805180856460

还可以通过域名解析 然后连接到内网

我们在阿里云的dns域名解析上面添加添加了我们域名和内网ip的对应关系,仅仅只是对应关系,所以我们ping域名可以解析成我们的内网ip,由于终端与对应机器在同一局域网所以能通,你换个不在同一内网的不行

5.虚拟主机域名配置

在根目录的www目录下创建文件夹test,里面在创建两个文件夹test1test2,分别创建index.html

image-20230805181232579

使用腾讯云DNSPod添加域名解析记录:

image-20230805181614222

修改nginx.conf

      server {
        listen 80;
        server_name test1.dselegent.icu;
        location /
        {
           root /www/test/test1;
           index index.html index.htm;
        }
      }
      
        server {
        listen 80;
        server_name test2.dselegent.icu;
        location /
        {
           root /www/test/test2;
           index index.html index.htm;
        }
      }

重新加载服务:systemctl reload nginx

结果:

image-20230805181750749

image-20230805181805077

注意:

虚拟主机技术server中,相同的主机端口号会报错。

可以这样配置:

  • listen 80; server_name www.website.com;
  • listen 88; server_name qqq.website.com;

两者组合起来不重复就可以了。

6.泛域名

所谓“泛域名解析”是指:利用通配符* (星号)来做次级域名以实现所有的次级域名均指向同一IP地址。

好处:

1.可以让域名支持无限的子域名(这也是泛域名解析最大的用途)。

2.防止用户错误输入导致的网站不能访问的问题

3.可以让直接输入网址登陆网站的用户输入简洁的网址即可访问网站

泛域名在实际使用中作用是非常广泛的,比如实现无限二级域名功能,提供免费的url转发,在IDC部门实现自动分配免费网址,在大型企业中实现网址分类管理等等,都发挥了巨大的作用。

在腾讯云的域名配置如下:

image-20230805183845203

7.域名解析规则

我们可以在同一个server_name中配置多个域名

此处所有配置都是指的nginx配置。

完整匹配
server中可以配置多个域名,例如:

server_name test1.dselegent.icu test2.dselegent.icu;

通配符匹配
使用通配符的方式如下:

server_name *.dselegent.icu;

需要注意的是完整匹配的优先级大于通配符匹配和正则匹配。

通配符结束匹配
使用通配符结束匹配的方式如下:

server_name www.dselegent.*;

正则匹配

采用正则的匹配方式如下:

server_name ~^[0-9]+\.dselegent\.icu$

访问:123456.dselegent.icu

正则匹配格式,必须以~开头,比如:server_name ~^www\d+\.example\.net$;。如果开头没有~,则nginx认为是精确匹配。在逻辑上,需要添加^和$锚定符号。注意,正则匹配格式中.为正则元字符,如果需要匹配.,则需要反斜线转义。如果正则匹配中含有{和}则需要双引号引用起来,避免nginx报错,如果没有加双引号,则nginx会报如下错误:directive "server_name" is not terminated by ";" in ...

匹配顺序

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1861493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg+javacpp+javacv使用

FFmpegjavacppjavacv使用 Bytedeco官网案例1、导入opencv、ffmpeg依赖包2、FFmpeg 数据结构2.1 AVFormatContext 格式化I/O上下文2.1.1 metadata2.1.2 Duration、start、bitrate等其他信息2.1.3 dump信息 Bytedeco GitHub:javacpp Bytedeco官网案例 FFmpeg – [示例…

C语言·动态内存管理

1. 为什么要有动态内存管理? 例1: //固定的向内存申请4个字节 int a 10;//申请连续的一块空间 int arr[10]; 这些数据一旦声明定义之后就会在内存中有一块空间,这些空间都是固定的,为了让内存使用更加灵活,这时我们…

【回溯算法题记录】组合总和题汇总

组合总和 39. 组合总和题目描述初始思路后续分析 40. 组合总和 II题目描述思路(参考代码随想录) 39. 组合总和 题目🔗 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数…

开源网安参与编制的《代码大模型安全风险防范能力要求及评估方法》正式发布

​代码大模型在代码生成、代码翻译、代码补全、错误定位与修复、自动化测试等方面为研发人员带来了极大便利的同时,也带来了对安全风险防范能力的挑战。基于此,中国信通院依托中国人工智能产业发展联盟(AIIA),联合开源…

教你使用 Go 语言访问智谱 AI 大模型!

AI 大模型太火爆了!我在工作中经常使用它们,感觉已经离不开了! 最近测试了智谱 AI 大模型,实测下来感觉还挺不错的。 官方提供了体验包,注册并实名认证之后有 300 万 token,非常壕! 今天的股…

uni-push(2.0)常见问题,Android平台

将常用的网址一定要收藏在标签栏中,方便后期找,不然后期会很生气。 草料二维码,这个在线工具可以将打包生成的apk文件生成二维码,供测试人员测试。生成的apk只有五次下载机会,可点击链接后的一键上传,这样…

站在巨人的肩膀上 C语言理解和简单练习(包含指针前的简单内容)

1.格式化的输入/输出 1.1printf函数 printf函数你需要了解的就是转换说明,转换说明的作用是将内存中的二进制转换成你所需要的格式入%d就是将内存中存储的变量的二进制转化为十进制并打印出来,同时我们可以在%X的转换说明对精度和最小字段宽度的指定&a…

如何在SpringBoot中自定义starter

如何在SpringBoot中自定义starter Spring Boot 提供了一种简便的方法来创建自定义的 starter,从而帮助开发者封装常用的配置和依赖。本文将介绍如何在 Spring Boot 中自定义一个 starter。 1. 创建 Maven 项目 首先,创建一个新的 Maven 项目&#xff…

SpringBoot开启事务日志

一般框架开启日志的方式: 开启某个包下的日志就写该包路径,开启某个类下的日志就写该类路径。

全国首场以AI数字内容风控为主题的大会,开放参会报名中

网易易盾将于2024年7月6日举办一场AI数字内容风控大会,邀请AI产业链的基础层、模型层和应用层的企业代表,科研机构、律所、院校的专家老师,探讨大模型时代下的自由与责任等话题。参会报名链接:https://sourl.cn/vqUU7X&#xff0c…

【计算机毕业设计】基于Springboot的月度员工绩效考核管理系统【源码+lw+部署文档】

包含论文源码的压缩包较大,请私信或者加我的绿色小软件获取 免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

HTTP/2 头部压缩 Header Compress(HPACK)详解

文章目录 1. HPACK 的工作原理1.1 静态表1.2 动态表 2. 压缩过程2.1 编码过程2.2 解码过程 3. HPACK 的优势 在HTTP1.0中,我们使用文本的形式传输header,在header中携带cookie的话,每次都需要重复传输几百到几千的字节,这着实是一…

推荐系统-FM模型

参考:推荐系统(三)Factorization Machines(FM)_svmmf-CSDN博客 一句话概括下FM:隐式向量特征交叉----类似embedding的思想 LR 如果利用LR做特征的二阶交叉,有: 但这个公式存在显著…

从0开始C++(七):继承

相关文章: 从0开始C(一):从C到C 从0开始C(二):类、对象、封装 从0开始C(三):构造函数与析构函数详解 从0开始C(四):作…

香港服务器托管对外贸行业必要性和优势

在当今全球化的经济环境下,外贸企业面临着前所未有的机遇与挑战。其中,服务器托管的选择对于外贸企业的运营效率和市场拓展具有举足轻重的作用。香港服务器,凭借其独特的地理位置、优质的网络环境和卓越的服务性能,一直是外贸企业…

2024年必备的15个免费 SVG 设计资源

在动态设计领域,SVG(可缩放矢量图形)已成为设计师打造响应迅速、清晰且适应性强的视觉效果的必备工具。 这些设计非常适合幻灯片 PowerPoint 演示文稿、应用程序设计、网站设计、原型设计、社交媒体帖子等。 在这篇文章中,我们将…

这份AI绘画攻略赶紧码住!超适合小白入门的PS AI插件来啦!

有没有小伙伴对AI绘画很感兴趣,但是看到国外的mj和sd总觉得入门困难!别担心,米兔挖到一款超级绝的国产PS AI插件!适合新手学习,米兔这里还有一份专为小白准备的AI绘画攻略,让你的创意不再受限! …

评测|贪吃小猫疯狂长肉,让它停不下嘴的希喂、鲜朗、帕特真实调研

我发现很多铲屎官存在一个误区,认为“进口即是高贵”,过度信赖进口产品。一见到进口宠物粮就冲动购买,甚至对国产品牌持贬低态度,贴上“质量不佳”、“不符合标准”等标签。 为了更深入地了解这一现象,我深入研究了主食…

minio+tusd+uppy搭建文件上传服务

1、docker部署minio、tusd服务 1.1 新建docker-compose.yml minio API: http://ip:9100 minio控制台: http://ip:9101 tus API: http://ip:9102/files/ tus webhooh: http:172.0.0.1:3000/files/webhooh(用户鉴权API) version: 3.7services:minio:image: minio/minio:RELEAS…

工业软件的分类与选择策略:针对中小企业的实际应用考量

工业软件是现代工业体系的“大脑”,已经渗透到几乎所有工业领域的核心环节,是现代产业之“魂”,是制造强国之重器。工业软件通过优化生产流程、实时监控设备状态、实现自动化控制等功能,可以帮助企业显著提升生产效率和质量&#…