nginx——前置知识

目录

0 前置知识

0.1 域名

定义

解析逻辑

核心区别

示例

本地优先

两种情况

浏览器发起请求

验证

一级域名(顶级域名)

二级域名

DNS 解析配置示例

IP + 端口

域名访问

0.2 InetAddress

0.3 搭建外网环境(公网访问)


0 前置知识

0.1 域名

  1. 主机名(hostname)
  • 定义
电脑 / 服务器的 “名字”(如电脑名LSL),由用户自行设置,无需注册。
  • 解析逻辑
本机访问自身主机名时,系统直接读取当前网卡的局域网 IP(无需配置hosts文件);其他设备访问该主机名时,需在对方hosts文件手动配置「IP + 主机名」映射。
  • 作用范围
仅本机 / 局域网内有效,与公网域名注册无关。
  1. 域名(Domain Name)
定义
需付费注册备案的公网 “主机名”(如taobao.com),通过全球 DNS 服务器自动解析。
解析逻辑
无需手动配置,全球设备均可访问;未注册的名字(如LSL)无法在公网解析。
核心区别
主机名是 “内部小名”,域名是 “公网合法名”,二者本质都是 “机器名字”,仅解析方式 / 使用范围不同。
示例
特性
localhost
普通公网域名 (如
taobao.com
)
作用
只指向本机
指向公网上的服务器
注册
无需注册,系统自带
需要付费注册备案
解析
固定解析为
127.0.0.1
通过全球 DNS 服务器解析
访问范围
仅限本机访问
全球任何设备都能访问
注:localhost 不是一个所有人共享的网站,而是一个 “本地专用词”,谁调用它,它就代表谁自己。
  1. 域名解析
本地优先
当客户端(浏览器)输入域名(如 www.boyatop.cn)时,系统会优先检查本地 hosts 文件。
  • 文件路径
Windows:C:\Windows\System32\drivers\etc\hosts。Linux:/etc/hosts
  • 作用
手动配置 “域名 → IP” 的映射关系,优先级高于公网 DNS。
两种情况
  • 有匹配项
如果 hosts 文件中存在该域名的 IP 映射,则直接返回该 IP(如 192.168.110.1)。
  • 无匹配项
如果 hosts 文件中没有,则通过互联网连接到电信/ 联通等运营商的 DNS 服务器。
运营商的 DNS 服务器会去全球 DNS 网络里,找到 www.boyatop.cn 对应的公网 IP(比如 14.215.177.38),然后返回给你的电脑。
浏览器发起请求
拿到 IP 后,浏览器就会向这个 IP 对应的服务器发起 HTTP 请求,获取网页内容。
验证
如果在C:\Windows\System32\drivers\etc\hosts里面,把百度的ip地址改为127.0.0.1,此时在浏览器访问www.baidu.com就无法正常显示页面。
  1. 一级域名 vs 二级域名
以 boyatop.cn 为例:
一级域名(顶级域名)
boyatop.cn
这是你花钱从阿里云 / 腾讯云等服务商购买的 “根域名”,是所有子域名的基础。
二级域名
www.boyatop.cn、api.boyatop.cn、m.boyatop.cn
这些是在一级域名基础上 “加前缀” 的子域名,不需要额外购买,只需要在域名服务商的后台做 “DNS 解析” 配置。
DNS 解析配置示例
  • @.boyatop.cn → 解析到 111.206.244.146(这是一级域名本身的 IP,@代表空,即地址栏直接输入boyatop.cn)
  • www.boyatop.cn → 解析到 111.206.244.146(这是二级域名的 IP)
  1. JavaWeb 里的 IP + 端口 vs 域名访问
IP + 端口
比如 192.168.1.100:8080
这是最底层的访问方式,直接告诉浏览器去哪个 IP 的哪个端口找服务。
域名访问
比如 www.boyatop.cn
这是对用户友好的方式,背后还是要先解析成 IP,再加上默认端口(HTTP 默认 80,HTTPS 默认 443)。
如果你在服务器上把服务跑在 80 端口,就可以直接用 www.boyatop.cn 访问,不用加端口号。

0.2 InetAddress

在JDK中提供了一个与IP地址相关的InetAddress类,该类用于封装一个IP地址,并提供了一系列与IP地址相关的方法。
  1. InetAddress getByName(String host)
  • 核心功能
根据传入的「主机标识」,获取对应的 IP 地址封装对象(InetAddress)。
  • host 参数支持的类型
主机名(如LSL、localhost);
域名(如taobao.com、boyatop.cn);
IP 地址字符串(如172.16.110.200、127.0.0.1)。
  • 解析逻辑
优先查本地 hosts 文件 → 再查局域网 / 公网 DNS → 返回对应 IP 的 InetAddress 对象。
  • 示例
InetAddress.getByName("LSL") → 返回你电脑 IP(172.16.110.200)的封装对象。
  1. InetAddress getLocalHost()
  • 核心功能
获取「当前运行代码的本机」的 InetAddress 对象(固定指向本机)。
  • 无参数
无需传入任何值,直接返回本机 IP + 主机名的封装对象。
  • 示例
InetAddress.getLocalHost() → 直接返回你电脑(LSL)的 InetAddress 对象。
  1. String getHostName()
  • 核心功能
从 InetAddress 对象中,获取该 IP 对应的「主机名 / 域名」。
  • 调用前提
必须先有 InetAddress 对象(如通过 getByName/getLocalHost获取)。
  • 示例
InetAddress addr = InetAddress.getByName("taobao.com");
addr.getHostName(); // 返回"taobao.com"(该IP对应的域名)
  1. boolean isReachable(int timeout)
  • 核心功能
检测该 InetAddress 对象对应的 IP 是否可访问(网络连通性)。
  • timeout 参数
超时时间(毫秒),超过该时间未连通则返回 false。
  • 场景
用于判断目标主机是否在线、网络是否通畅。
  • 示例
InetAddress addr = InetAddress.getByName("localhost");
addr.isReachable(3000); // 3秒内检测本机是否可访问,返回true
  1. String getHostAddress()
  • 核心功能
从 InetAddress 对象中,提取纯字符串格式的 IP 地址(仅返回 IP,无主机名)。
  • 无歧义说明
无论传入的是主机名 / 域名 / IP,最终都返回对应的原始 IP 字符串。
  • 示例
InetAddress addr = InetAddress.getByName("LSL");
addr.getHostAddress(); // 返回"172.16.110.200"(纯IP字符串)

0.3 搭建外网环境(公网访问)

要让别人从外网访问你的项目,需要这几步:
  1. 有公网 IP
你的服务器需要有一个能被外网访问的 IP(可以从云服务商购买,比如阿里云 ECS)。
  1. 购买一级域名
比如 boyatop.cn。
  1. 配置 DNS 解析
在域名服务商后台,把 www.boyatop.cn 解析到你的公网 IP。
  1. 启动服务
在服务器上启动你的 JavaWeb 项目,监听 80 或 443 端口。
  1. 外网访问
别人在浏览器输入 www.boyatop.cn,就能访问到你的项目了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值