服务器 | Host、DNS 与 Nginx:Web 访问背后的关键角色解析

发布于:2025-06-20 ⋅ 阅读:(19) ⋅ 点赞:(0)

系列文章目录



前言

在现代Web开发中,有几种常用的Web服务器被广泛应用于不同的场景。

  1. Nginx(本文描述):Nginx是一个高性能的 HTTP反向代理 服务器,同时也可以作为邮件代理服务器和通用的TCP/UDP代理服务器。

  2. Apache HTTP Server:以其强大的模块化架构和灵活性著称。

  3. LiteSpeed:LiteSpeed是一款专为提高性能而设计的Web服务器,尤其是针对高并发访问进行了优化。

  4. Caddy:Caddy是一个现代化的、简易的Web服务器,以自动获取和更新SSL证书闻名。


一、什么是nginx?

  • nginx(发音为 “engine-x”)是一个高性能的 HTTP反向代理 服务器,同时也可以作为邮件代理服务器和通用的TCP/UDP代理服务器 。
    • 它以其稳定性、丰富的功能集、配置简单低资源消耗 而闻名。

功能

  • 提供静态内容服务。
  • 实现反向代理,将请求转发给后端服务器处理。
  • 负载均衡,分发流量到多个后端服务器。
  • 支持SSL/TLS加密连接(HTTPS)。
  • URL重写与重定向等功能。

特点

  • 高效处理静态内容。
  • 支持负载均衡、HTTP缓存、SSL/TLS加密连接(HTTPS)等。
  • 资源消耗低,性能优越。
  • 灵活的配置选项,支持URL重写和重定向。

二、什么是本地host?

  • hosts 文件是没有扩展名的系统文件,它用于手动指定 域名IP 地址 之间的 映射关系
    • 可直接控制某些域名在你的机器上解析到哪个IP地址,而不依赖于外部的DNS查询。

用途:

  • 在开发环境中测试新网站或应用,无需正式配置DNS记录。
  • 快速重定向特定域名到不同的IP地址,例如指向本地开发环境。
  • 阻止访问特定网站(通过将其指向无效IP)。

在这里插入图片描述

三、什么是DNS服务器?

  • 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。
    • 作为将域名和IP地址相互映射的一个分布式数据库,使人更方便地访问互联网。
    • DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
  • 简单而言:
    • 把域名解析为IP地址,保存的就是域名和ip的映射关系。
    • 负责将人类可读的域名转换为计算机使用的IP地址。

在这里插入图片描述

功能:

  • 解析域名到相应的IP地址。
  • 支持负载均衡、故障转移等高级功能。
  • 缓存查询结果以提高响应速度。

类型:

  • 递归解析器:如Google Public DNS (8.8.8.8),接受客户端请求并执行完整的域名解析过程。
  • 权威DNS服务器:存储特定域的具体记录(A记录、MX记录等),提供最终的答案给递归解析器。

在这里插入图片描述

本机的DNS服务器配置

在这里插入图片描述

丝滑小连招:

在这里插入图片描述

四、nginx、本地host、域名解析之间的关系

Hosts 文件 vs DNS

  • 当你在浏览器中输入一个网址时,操作系统首先检查 hosts 文件是否有对应的条目。
    • 如果有,则使用该条目中的IP地址;
    • 如果没有,则会向DNS服务器发起查询。

DNS 与 Nginx

  • 如果你的Web应用程序部署在一个具有公共IP地址的服务器上,并且已经配置了正确的DNS记录(例如,将yourdomain.com指向该服务器的IP),那么当用户访问yourdomain.com时,DNS服务器会返回这个IP地址给用户的设备。
  • 用户的请求到达服务器后,Nginx根据其配置决定如何处理这些请求。这可能包括直接提供静态文件、将请求转发给后端的应用程序服务器、或者基于URL路径进行不同类型的处理。

Hosts 文件与 Nginx

  • 在开发阶段,你可以利用 hosts 文件将自定义域名(比如local.yourapp.com)指向运行Nginx的本地机器或开发服务器。这样,在不修改实际DNS记录的情况下,就可以在本地环境中模拟生产环境的行为。

客户端通过域名请求服务

  • 首先,访问本地host。
    • 如果你在本地的hosts文件中配置了该域名与ip的映射关系,那么,请求就会直接发送到hosts文件中对应的ip,不会通过dns解析
    • 如果本地hosts文件中没有配置,就会通过dns解析域名。
  • 当请求到达了服务端,服务端的nginx程序拦截了该请求,然后在本地通过域名匹配server_name。然后,根据 proxy_pass反向代理IP 的服务程序,返回相应的服务给客户端。

简单请求的访问流程

  • 一般云服务器上,我们不光要域名解析至服务器就好了,还要向服务商申请添加白名单,把域名添加至白名单中,才可以通过域名跳到Nginx。

假设在客户端A
-----> 浏览器url请求域名
-----> 域名被host解析对应的IP
-----> 到对应IP的服务器
-----> 先被nginx反向代理拦截
-----> 找到nginx上一样域名(nginx.conf配置文件中server里的server_name)
-----> 对应的反向映射地址(server中proxy_pass 映射Tomcat中程序发布路径:http:localhost:8080)
-----> 对应8080端口的项目

总结

  • hosts 文件、DNS 服务器和 Nginx 各自扮演着不同的角色,但共同作用于确保用户能够顺利地从他们的浏览器访问所需的在线资源。
  • 通过合理配置这三个组件,可以有效地提升用户体验并简化开发流程。

各位再见!这里是 鳄鱼杆的空间,钓……鳄鱼的杆儿!

期待下次再会!

愿你的每一次垂钓之旅都能满载而归。

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到