1. Nginx 概览

1. Nginx在架构体系中的位置与功用

  1. 网关
  2. 虚拟主机:为不同域名/ip/端口提供服务
  3. 路由:使用反向代理,整合后面服务为一个完整业务
  4. 静态服务器:mvvm模式中,用来发布 html/css/js/img
  5. 负载集群:使用upstream,负载多个tomcat。

2. 架构设计

在这里插入图片描述

  1. 核心模块
    正常运行必不可少的模块,提供错误日志记录、配置文件解析、事件驱动机制、进程管理等核心功能。
  2. 标准 HTTP 模块
    提供 HTTP 协议解析相关的功能,如:端口配置、网页编码设置、HTTP 响应头设置等。
  3. 可选 HTTP 模块
    用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,如:Flash 多媒体传输、解析 GeoIP 请求、SSL 支持等。
  4. 邮件服务模块
    用于支持 Nginx 的邮件服务,包括对 POP3 协议、IMAP 协议和 SMTP 协议的支持。
  5. 第三方模块
    为了扩展 Nginx 服务器应用,完成开发者自定义功能,如:Json 支持、Lua 支持等。

3. Nginx 多进程模型

在这里插入图片描述
服务器每收到一个客户端请求时。就有服务器主进程(master process)生成一个子进程(worker process)出来和客户端建立连接进行交互,直到连接断开,该子进程结束。

使用进程的好处是各个进程之间相互独立,不需要加锁,减少了使用锁对性能造成影响,同时降低编程的复杂度,降低开发成本。其次,采用独立的进程,可以让进程互相之间不会影响,如果一个进程发生异常退出时,其它进程正常工作,master 进程则很快启动新的 worker 进程,确保服务不中断,将风险降到最低。
缺点是操作系统生成一个子进程需要进行内存复制等操作,在资源和时间上会产生一定的开销;当有大量请求时,会导致系统性能下降。

4. Nginx的异步非阻塞 IO

Nginx 使用的是 epoll。

传统的 select 和 epoll 模式:

  1. 新连接来了,线程一起抢,谁抢到算谁的。
  2. 被惊醒的线程轮询所有的 tcp 连接,找到有事件的 tcp 连接处理。

epoll 模式:

  1. 新连接来了,线程一起抢,谁抢到算谁的。
  2. 内核把事件写入Map,被惊醒的线程直接到 Map 中查找。

select、poll 模式中右侧抢到的线程会去轮询左侧的所有 TCP 连接,epoll 模式右侧抢到的线程会去 Map 中查找事件。
在这里插入图片描述

5. 代理

  1. 正向代理
    是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
    在这里插入图片描述
  2. 反向代理
    以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
银河麒麟是一个基于Linux系统的操作系统,而Nginx则是一个轻量级的Web服务器和反向代理服务器。要在银河麒麟上进行Nginx的离线安装,可以按照以下步骤进行操作: 1. 下载Nginx安装包:在银河麒麟的官方网站或者Nginx官方网站上下载适用于Linux系统的Nginx压缩包。确保下载的安装包版本与操作系统的架构相匹配。 2. 安装依赖软件包:在离线环境下,需要手动安装Nginx所依赖的软件包。可以通过在终端执行命令`sudo apt install`来安装所需的依赖软件包。具体的依赖包名称可以在Nginx官方文档或者银河麒麟的软件包管理器中查找。 3. 解压安装包:将下载好的Nginx安装包解压到指定目录,可以使用命令`tar -zxvf`来解压。解压后,会得到一个包含Nginx相关文件的文件夹。 4. 编译和安装:进入解压后的文件夹,执行`./configure`命令来进行编译配置。该命令会检查系统环境并生成对应的Makefile文件。然后执行`make`命令进行编译,最后执行`sudo make install`命令安装Nginx到系统中。 5. 启动Nginx:安装完成后,可以使用命令`sudo nginx`来启动Nginx服务器。可以通过`sudo systemctl start nginx`命令来启动Nginx的systemd服务。可以通过`sudo systemctl enable nginx`命令将Nginx设置为开机自启动。 通过以上步骤,就可以在银河麒麟的离线环境下成功安装Nginx服务器。在安装完成后,可以通过在浏览器中输入服务器IP地址来验证Nginx是否正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值