这张图片描述了一个简单的 Web 服务器架构,包含多个服务和反向代理的配置。以下是对每个部分的详细解释,帮助你理解其中的技术内容:
1. Web Server: ifn666.com
- 这是你的主域名(
ifn666.com
),所有服务都通过这个域名访问。 - 域名下的不同路径(如
/locallib
、/carhire
、/cafe
)会被反向代理转发到不同的本地服务。
2. Local Services(本地服务)
本地运行了三个独立的服务,每个服务监听不同的端口:
-
Local lib service
- 文件路径:
/apps/locallib/server.js
- 监听端口:
:3000
- 这是一个本地库服务,可能提供一些本地资源或功能。
- 文件路径:
-
Car hire service
- 文件路径:
/apps/carhire/server.js
- 监听端口:
:3005
- 这是一个租车服务,可能提供与租车相关的 API 或功能。
- 文件路径:
-
Cafe service
- 文件路径:
/apps/cafe/server.js
- 监听端口:
:3010
- 这是一个咖啡馆服务,可能提供与咖啡馆相关的 API 或功能。
- 文件路径:
3. Reverse Proxy(反向代理)
反向代理的作用是将外部请求转发到内部服务。以下是反向代理的配置:
-
Internet
:443 HTTPS
:外部用户通过 HTTPS(加密的 HTTP 协议)访问你的服务。:80 HTTP
:外部用户也可以通过 HTTP(未加密的 HTTP 协议)访问你的服务。
-
GET Requests(GET 请求)
GET //ifn666.com/locallib/api
:外部用户可以通过ifn666.com/locallib/api
访问本地库服务的 API。GET //ifn666.com/carhire/api
:外部用户可以通过ifn666.com/carhire/api
访问租车服务的 API。GET //ifn666.com/cafe/api
:外部用户可以通过ifn666.com/cafe/api
访问咖啡馆服务的 API。
-
Reverse Proxy Configuration(反向代理配置)
- 反向代理根据请求的路径将请求转发到不同的本地服务:
handle /locallib/*
:匹配以/locallib
开头的请求,去掉前缀/locallib
,然后转发到localhost:3000
。handle /carhire/*
:匹配以/carhire
开头的请求,去掉前缀/carhire
,然后转发到localhost:3005
。handle /cafe/*
:匹配以/cafe
开头的请求,去掉前缀/cafe
,然后转发到localhost:3010
。
- 反向代理根据请求的路径将请求转发到不同的本地服务:
4. 详细解释每个语句
- Listening on :3000:本地库服务在端口 3000 上监听请求。
- Listening on :3005:租车服务在端口 3005 上监听请求。
- Listening on :3010:咖啡馆服务在端口 3010 上监听请求。
- handle /locallib/*:反向代理会处理所有以
/locallib
开头的请求。 - url strip_prefix /locallib:在转发请求之前,去掉路径中的
/locallib
前缀。 - reverse_proxy localhost:3000:将请求转发到本地运行的端口 3000 的服务。
5. 初学者如何理解
- 域名和路径:
ifn666.com
是你的网站域名,/locallib
、/carhire
、/cafe
是网站的不同部分。 - 端口:每个服务运行在本地不同的端口上(如 3000、3005、3010),端口是计算机上用于区分不同服务的数字。
- 反向代理:反向代理就像一个“中间人”,它接收外部请求,然后根据请求的路径将请求转发到正确的本地服务。
- HTTPS 和 HTTP:HTTPS 是加密的网络协议,HTTP 是未加密的网络协议。通常建议使用 HTTPS 以保护数据安全。
6. 总结
- 这张图片展示了一个简单的 Web 服务器架构,包含多个本地服务和一个反向代理。
- 反向代理的作用是将外部请求根据路径转发到不同的本地服务。
- 每个服务监听不同的端口,提供不同的功能(如本地库、租车、咖啡馆)。
这张图片展示了一个基于 域名解析(DNS) 和 独立服务器 的架构,没有使用反向代理。以下是对图片内容的详细分析,以及作为初学者如何理解这些技术。
1. 域名解析(DNS)
- 域名:每个服务都有一个独立的域名,例如:
locallib.n123.ifn666.com
carhire.n123.ifn666.com
cafe.n123.ifn666.com
- IP 地址:每个域名对应一个独立的 IP 地址,例如:
locallib.n123.ifn666.com
对应186.94.58.23
carhire.n123.ifn666.com
对应186.94.58.24
cafe.n123.ifn666.com
对应186.94.58.25
- 作用:DNS 将域名转换为 IP 地址,客户端通过域名访问服务时,DNS 会将其解析为对应的 IP 地址。
2. 独立服务器架构
- 每个服务运行在独立的服务器上,每个服务器有自己的 IP 地址和端口。
- 例如:
locallib.n123.ifn666.com
运行在186.94.58.23
上,监听端口:80
(HTTP)和:443
(HTTPS)。carhire.n123.ifn666.com
运行在186.94.58.24
上,监听端口:80
和:443
。cafe.n123.ifn666.com
运行在186.94.58.25
上,监听端口:80
和:443
。
3. 不使用反向代理
- 在这种架构中,没有使用反向代理,每个服务直接通过自己的域名和 IP 地址对外提供服务。
- 客户端直接访问每个服务的域名,DNS 将其解析为对应的 IP 地址,然后客户端直接与目标服务器通信。
4. 初学者如何理解这种架构?
1. 域名和 IP 地址
- 域名:类似于“家庭地址”,方便人们记忆(如
locallib.n123.ifn666.com
)。 - IP 地址:类似于“经纬度坐标”,是服务器在网络中的唯一标识(如
186.94.58.23
)。 - DNS:类似于“地图导航”,将域名转换为 IP 地址。
2. 独立服务器
- 每个服务(如本地库、租车、咖啡馆)运行在独立的服务器上。
- 每个服务器有自己的 IP 地址和端口,客户端直接访问这些服务器。
3. 不使用反向代理
- 在这种架构中,没有“中间人”(反向代理),客户端直接与目标服务器通信。
- 这种架构适合小型系统,但随着服务数量增加,管理起来会变得复杂。
5. 这种架构的优缺点
优点
- 简单直接:每个服务独立运行,易于理解和部署。
- 独立性:一个服务的故障不会影响其他服务。
缺点
- 管理复杂:随着服务数量增加,需要管理多个域名和 IP 地址。
- 缺乏统一入口:没有反向代理,无法实现负载均衡、路径路由等功能。
- 安全性较低:每个服务直接暴露在公网,增加了被攻击的风险。
6. 初学者如何实践这种架构?
1. 设置 DNS
- 在域名注册商(如 GoDaddy、Cloudflare)中,为每个服务添加 DNS 记录,将域名解析到对应的 IP 地址。
2. 部署服务
- 在每个服务器上部署对应的服务(如本地库、租车、咖啡馆)。
- 确保服务监听正确的端口(如
:80
和:443
)。
3. 测试访问
- 使用浏览器或工具(如
curl
)访问每个服务的域名,测试是否能正常访问。
7. 与反向代理架构的对比
- 反向代理架构:
- 使用一个统一的入口(如
ifn666.com
)。 - 反向代理根据路径将请求转发到不同的后端服务。
- 适合中大型系统,易于扩展和管理。
- 使用一个统一的入口(如
- 独立服务器架构:
- 每个服务有自己的域名和 IP 地址。
- 适合小型系统,简单直接。
8. 总结
- 这张图片展示了一个基于 DNS 和独立服务器的架构,没有使用反向代理。
- 每个服务通过独立的域名和 IP 地址对外提供服务。
- 这种架构简单直接,但随着服务数量增加,管理起来会变得复杂。
- 初学者可以通过设置 DNS 和部署服务,实践这种架构的基本原理。