【网络】简单的 Web 服务器架构解析,包含多个服务和反向代理的配置,及非反向代理配置

在这里插入图片描述
这张图片描述了一个简单的 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 和部署服务,实践这种架构的基本原理。

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

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

相关文章

​​​​​​​大语言模型安全风险分析及相关解决方案

大语言模型的安全风险可以从多个维度进行分类。 从输入输出的角度来看,存在提示注入、不安全输出处理、恶意内容生成和幻觉错误等风险; 从数据层面来看,训练数据中毒、敏感信息泄露和模型反演攻击是主要威胁; 模型自身则面临拒绝服务和盗窃的风险; 供应链和插件的不安全引…

贪心算法——c#

贪心算法通俗解释 贪心算法是一种"每一步都选择当前最优解"的算法策略。它不关心全局是否最优,而是通过局部最优的累积来逼近最终解。优点是简单高效,缺点是可能无法得到全局最优解。 一句话秒懂 自动售货机找零钱:用最少数量的…

STM32 - 在机器人领域,LL库相比HAL优势明显

在机器人控制器、电机控制器等领域的开发,需要高实时性、精细化控制或者对代码执行效率、占用空间有较高要求。所以,大家常用的HAL库明显不符合要求。再加上,我们学习一门技术,一定要学会掌握底层的原理。MCU开发的底层就是寄存器…

【计算机网络】2物理层

物理层任务:实现相邻节点之间比特(或)的传输 1.通信基础 1.1.基本概念 1.1.1.信源,信宿,信道,数据,信号 数据通信系统主要划分为信源、信道、信宿三部分。 信源:产生和发送数据的源头。 信宿:接收数据的终点。 信道:信号的传输介质。 数据和信号都有模拟或数字…

deepseek GRPO算法保姆级讲解(数学原理+源码解析+案例实战)

文章目录 什么是GRPO群组形成(Group Formation):让大模型创建多种解决方案偏好学习(Preference Learning):让大模型理解何为好的解答组内相对优势 优化(optimization): 让大模型从经验中学习(learning from experience)目标函数 GRPO算法的伪码表示GRPO算法的局限与…

使用 WebP 优化 GPU 纹理占用

WebP 格式相比 JPEG / PNG 文件更小,可以 减少 GPU 纹理内存占用,提高 WebGL / Three.js / 3D 渲染 的性能。 🔹 为什么 WebP 能减少 GPU 内存占用? 文件更小 → WebP 比 JPG/PNG 压缩率更高,减少 纹理上传 带宽&…

Google Cloud Run 如何实现无服务器(Serverless)部署?

DDoS(分布式拒绝服务)攻击是黑客常用的一种手段,通过大量恶意流量冲击服务器,导致网站无法访问。针对这种威胁,Cloudflare提供了一整套防护措施,包括流量过滤、速率限制、防火墙规则等,使网站能…

QuickAPI 和 DBAPI 谁更香?SQL生成API工具的硬核对比(一)

最近低代码开发火得不行,尤其是能把数据库秒变API的工具,简直是开发者的救星。今天咱就聊聊两款国内玩家:QuickAPI(麦聪软件搞出来的低代码神器)和 DBAPI(开源社区的硬核作品)。这两货都能靠SQL…

BigEvent项目后端学习笔记(一)用户管理模块 | 注册登录与用户信息全流程解析(含优化)

📖 模块概述 用户管理模块是系统的核心基础模块,包含 注册、登录、用户信息维护 等功能。本模块涉及 JWT Token认证、密码加密存储、文件上传 等关键技术点,是理解前后端分离架构中安全与数据交互的典型实践。本篇对于原项目进行了代码优化&…

c#:使用串口通讯实现数据的发送和接收

串口通讯(Serial Communication)是一种常见的硬件设备与计算机之间的数据传输方式,广泛应用于工业控制、嵌入式系统、传感器数据采集等领域。本文将详细介绍如何使用C#实现基于串口通讯的数据发送和接收,并结合代码示例解析其实现…

k8s面经

最近面了几场,k8s技能几乎成了运维的必备品了。 容器一直pending可能的原因调度问题。容器的调度策略,比如标签选择、容忍度或者亲和度,导致没有合适的节点可供调度 资源问题,比如宿主机的CPU内存磁盘不足,或者要挂载…

网络通信(传输层协议:TCP/IP ,UDP):

Socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。 网络协议:一台电脑的数据怎么传递给另一台电脑,是由网络协议来规定的 端口号&#…

DeepSeek进阶应用(二):结合Kimi制作PPT(双AI协作教程)

🌟引言: DeepSeek作为国产AI大模型,以强大的逻辑推理和结构化内容生成能力著称,擅长根据用户需求生成PPT大纲或Markdown文本;Kimi的PPT助手则能解析结构化内容并套用模板快速生成美观的PPT,两者结合实现“内…

卷积神经网络(知识点)

一、为了使特征图变小: 由两种方法:1.增大步长:卷积的时候不是一次一步,而是一次多步,类似一张图片,在原来的像素基础上,每隔一个取一个像素点。 其中S就是步长 注意:扩大步长不经…

考研系列-408真题计算机网络篇(18-23)

写在前面 此文章是本人在备考过程中408真题计算机网络部分(2018年-2023年)的易错题及相应的知识点整理,后期复习也常常用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2018 1.停止-等待协议的…

std::invoke详解

基础介绍 c17版本引入了std::invoke特性,这是一个通用的调用包装器,可以统一调用: 普通函数成员函数函数对象Lambda表达式指向成员的指针 它的主要作用是提供一个统一的方式来调用各种可调用对象。 std::invoke依赖的头文件:#…

使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b或DeepSeek-r1:1.5b 模型(完成度80%)

原文:🚣‍♂️ 使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b 模型 🚣 — PaddleNLP 文档 使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b 模型 🚣 PaddleNLP 在支持 AVX 指令的 CPU 上对 llama 系列模型进行了…

Kotlin高效实现 Android ViewPager2 顶部导航:动态配置与性能优化指南

高效实现:强调代码的性能优化。Android ViewPager2:明确技术栈。顶部导航:核心功能点。动态配置与性能优化指南:突出动态配置的灵活性和性能优化的重点。 在 Android 开发中,使用 ViewPager2 实现高效的顶部导航&…

六种最新优化算法(TOC、MSO、AE、DOA、GOA、OX)求解多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码

一、算法简介 (一)阿尔法进化(Alpha Evolution,AE)算法 阿尔法进化(Alpha Evolution,AE)算法是2024年提出的一种新型进化算法,其核心在于通过自适应基向量和随机步长的…

上传本地项目到GitHub

一、在GitHub上创建仓库 1.点击右上角头像–>点击Your repositories 2.点击New 3.创建仓库 网址复制一下,在后面git上传时会用到 二、打开Git Bash 1.cd 进入项目所在路径 2.输入git init 在当前项目的目录中生成本地的git管理(当前目录下出现.…