Nginx网站服务

目录

一、Nginx服务基础

1、Nginx概述

1.1、Nginx简介

1.2、Nginx的功能

1.3、Nginx的基础特性

1.4、Nginx 应用场景

2、Nginx的架构

3、Nginx 进程结构

4、Nginx 模块

5、Nginx 相对于 Apache 的优缺点

二、编译安装Nginx 服务

1、yum部署

1.1、yum安装Nginx

1.2、yum安装的nginx的配置文件

2、Nginx编译安装

2.1、下载安装包

2.2、安装依赖包且创建用户与组

2.3、编译安装Nginx

2.4、添加 Nginx 系统服务

三、Nginx的主配置文件nginx.conf

1、全局配置

2、I/O 事件配置

3、HTTP配置

四、实战案例

1、Nginx的访问状态统计

1.1、检查模块

1.2、修改 nginx.conf 配置文件

1.3、重启服务并测试

2、基于授权的访问控制

2.1、生成用户密码认证文件

2.2、修改 Nginx 主配置文件,添加认证配置项

2.3、重启服务并进行测试:

3、基于客户端的访问控制

3.1、编辑 Nginx 主配置文件,添加访问控制规则

3.2、重启服务应用配置

4、基于IP 的 Nginx 虚拟主机

4.1、配置网卡

4.2、编辑Nginx配置文件,设置多个监听地址

4.3、重启Nginx服务并测试

5、基于端口的 Nginx 虚拟主机

5.1、编辑Nginx配置文件

5.2、重启Nginx服务并测试

五、升级Nginx(18——>22)

1、下载22版本安装包、解压

2、安装模块、并进行编译

3、备份18版本Nginx,更换22版本Nginx文件

4、重启服务,查看版本


一、Nginx服务基础

1、Nginx概述

1.1、Nginx简介

Nginx ("engine x") 是一个 高性能 HTTP 和反向代理服务器。 Nginx 是由 Igor Sysoev 为俄
罗斯访问点开量第二的 Rambler.ru 站发的,第一个公开版本 0.1.0 发布于 2004 10 4 日。其将源 代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而 闻 名。2011 年 6 1 日, Nginx 1.0.4 发布。 1.18 1.20 1.22 1.12
Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件( IMAP/POP3 )代理服务器,
单台物理服务器 可支持 30 000 50 000 个并发请求 。并在一个 BSD-like 协议下发行。由俄罗斯的程序设 计师 Igor Sysoev 所开发,供俄国大型的入口网站及搜索引擎 Rambler (俄文: Рамблер )使用。其特 点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国 大陆使用 Nginx 网站用户有:百度 BWS 、新浪、网易、腾讯、等。
Nginx 官网:
RamBler:http://www.rambler.ru/
nginx: http://nginx.org/
Mainline version 主线版本
Stable version
稳定版本
Legacy versions 老版本,遗产版本
旧版本下载:http://mirrors.sohu.com/nginx/
Nginx 中文参考地址: http://www.nginx.cn/doc/

1.2、Nginx的功能

静态资源的 Web 服务器

  • 功能:NGINX 可以作为静态资源服务器,直接处理并提供 HTML、图片、JavaScript、CSS、文本文件等静态内容的请求。

  • 应用场景:适用于部署网站的静态内容,减少后端服务器的负载,提升页面加载速度。

HTTP/HTTPS 协议的反向代理

  • 功能:NGINX 支持 HTTP 和 HTTPS 协议的反向代理,可以将客户端的请求根据 URL、域名等规则转发到后端服务器。

  • 应用场景:常用于 Web 应用的负载均衡和请求转发,实现高并发、高可用性的网站架构。

动态资源请求的反向代理

  • 功能:NGINX 可以通过 FastCGI、uWSGI、SCGI 等协议,将动态资源请求(如 PHP、Python、Ruby 等)转发到后端应用服务器处理。

  • 应用场景:适用于需要处理动态内容的 Web 应用,与 Apache、Django、Flask 等服务器协作,分担负载。

TCP/UDP 协议的请求转发(四层代理)

  • 功能:NGINX 支持 TCP 和 UDP 协议的请求转发,作为四层代理服务器,将流量转发到指定的后端服务器。

  • 应用场景:适用于非 HTTP/HTTPS 的服务,如数据库、邮件服务等网络应用的负载均衡和高可用性配置。

1.3、Nginx的基础特性

模块化设计与较好的扩展性:NGINX 采用模块化设计,核心功能可以通过加载不同的模块进行扩展。这种设计使得 NGINX 能够灵活适应各种需求,提供如 gzip 压缩、SSL 加密、URL 重写、访问控制等功能,提升服务器的灵活性和适应性。

高可靠性:NGINX 以其高可靠性著称,能够在高并发和高负载的环境下保持稳定运行。它支持多种故障恢复机制,如自动故障切换和健康检查,确保服务的连续性和可用性。

支持热部署:NGINX 支持热部署,可以在不中断服务的情况下重新加载配置文件、升级版本、或更换日志文件。这种功能使得管理员能够在不影响现有连接的情况下进行配置更新和系统维护,避免服务中断。

低内存消耗:NGINX 在处理大量并发连接时表现出色,内存消耗极低。在 keep-alive 模式下,处理 10,000 个非活动连接仅需约 2.5MB 的内存资源,充分展示了其在资源使用上的高效性。

事件驱动架构与高性能 I/O:NGINX 采用事件驱动架构,结合异步 I/O(AIO)、内存映射(mmap)、以及 sendfile 系统调用,能够高效地处理大量并发连接。这些技术使得 NGINX 在处理静态和动态内容时都能保持高性能,适用于高流量的网站和应用。

这些基础特性使得 NGINX 成为一个强大而灵活的服务器,广泛应用于各种 Web 应用和网络服务的部署中。

1.4、Nginx 应用场景

  • 静态服务器:NGINX 能够高效处理静态内容的请求,包括图片、视频、文本文件等。作为静态服务器,NGINX 可以直接提供 HTML、CSS、JavaScript 等文件,并通过 sendfile 等技术优化文件传输,适用于高流量的网站和内容分发网络(CDN)。
  • 动态服务:通过与 FastCGI、uWSGI、SCGI 等协议集成,NGINX 可以作为动态内容的反向代理,将请求转发给后端应用服务器(如 PHP、Python、Ruby 等)。这种设置允许 NGINX 处理动态服务的请求,同时分担后端服务器的负载,提高整体性能。
  • 反向代理与负载均衡:NGINX 常用作反向代理服务器,负责将客户端请求转发到多个后端服务器。通过支持多种负载均衡策略(如轮询、最少连接、IP 哈希等),NGINX 能够有效分配流量,提升系统的高可用性和可扩展性。此外,NGINX 还可以处理 SSL 终端、HTTP/2 和 WebSocket 请求,进一步增强其作为反向代理的能力。
  • 缓存服务:NGINX 可以配置为缓存服务器,将来自后端服务器的响应内容缓存下来,用于加速后续的相同请求。这种缓存机制能够显著减少后端服务器的负载,提升页面加载速度,并优化用户体验。NGINX 的缓存策略灵活,可以根据需求进行精细化的缓存控制。

2、Nginx的架构

解释:

1)首先,每个 worker 进程都是从 master 进程 fork 过来,在 master 进程里面,先建立好需要 listen **socketlistenfd**之后,然后再 fork 出多个 worker 进程。

2)所有 worker 进程的 listenfd 会在新连接到来时变得可读,为保证只有一个进程处理该连接,所有 worker 进程会在注册 listenfd 读事件前抢 accept_mutex,抢到互斥锁的那个进程注册 listenfd 读事件,然后在读事件里调用 accept 接受该连接。(解决惊群)

3)当一个 worker 进程在 accept 这个连接之后,就开始读取请求、解析请求、处理请求。产生数据 后,再返回给客户端,最后才断开连接,这样一个完整的请求就是这样的了。

3、Nginx 进程结构

web请求处理机制
  • 多进程方式:服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,直 到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务 器资源耗尽而无法提供请求。
  • 多线程方式:与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个线程来个客 户方进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器 对系统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可 以相互访问同样的内存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作 了,IIS服务器使用了多线程的方式,需要间隔一段时间就重启一次才能稳定。

工作进程(Worker Process)的功能整理如下

①、Worker 进程的平等性

  • 所有 Worker 进程都是平等的,独立处理请求。

②、处理网络请求

  • Worker 进程负责实际处理客户端的网络请求。

③、Worker 进程数量配置

  • Worker 进程的数量通常设置为 CPU 核心数,以充分利用 CPU 资源,避免因进程过多导致的 CPU 资源竞争和上下文切换损耗。

④、请求处理流程

  • 接受客户请求并依次将其送入各个功能模块进行处理。
  • 进行 I/O 调用,获取响应数据。
  • 与后端服务器通信,接收并处理后端服务器的响应结果。
  • 访问缓存࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值