web群集--rocky9.2源码部署nginx1.24的详细过程

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: Nginx 是一款由 Igor Sysoev 开发的开源高性能 HTTP 服务器和反向代理服务器,自 2004 年发布以来,以其高效、稳定和灵活的特点迅速成为许多网站和应用的首选。本文详细介绍了 Nginx 的核心概念、工作原理及常见使用场景,涵盖高并发处理、反向代理、负载均衡、低内存占用等特点,并提供了安装配置教程,适合开发者参考学习。

@[TOC]

···
前言
在现代互联网架构中,Nginx 已经成为了许多网站和应用程序的首选服务器。无论是作为一个 Web 服务器、反向代理服务器、邮件代理服务器,还是负载均衡器,Nginx 都展现了其高效、稳定和灵活的特性。本文将详细介绍 Nginx 的核心概念、工作原理以及常见的使用场景,希望能为那些对 Nginx 感兴趣的开发者提供一个全面的参考。

一、什么是 Nginx?

Nginx(读作“Engine-X”)是由俄罗斯开发者 Igor Sysoev 在2004年首次发布的开源高性能 HTTP 服务器和反向代理服务器。Nginx 的设计目标是处理高并发连接的场景,同时保持较低的内存使用。由于其卓越的性能和稳定性,Nginx 很快成为了 Apache 的主要竞争对手。

Nginx 的主要特点包括:

高并发连接处理能力: Nginx 采用事件驱动(event-driven)的架构,这使得它能够高效地处理大量的并发连接,尤其在处理静态内容时表现出色。

反向代理和负载均衡: Nginx 能够充当反向代理服务器,将客户端的请求转发到后端服务器,同时支持多种负载均衡算法,例如轮询(Round Robin)、最少连接(Least Connections)等。

低内存占用: 与传统的进程或线程模型不同,Nginx 使用单线程处理多个请求的方式,大大降低了内存消耗。

模块化设计: Nginx 的核心功能可以通过模块扩展,这使得它能够适应多种使用场景。

简单配置: Nginx 的配置文件采用模块化的语法结构,清晰且易于管理。

二、Nginx 的架构和工作原理

Nginx 的架构设计与传统的 Web 服务器不同,它采用了异步非阻塞的事件驱动模型,这使得它能够同时处理成千上万的连接,而不会像其他基于进程或线程的服务器那样由于过多的上下文切换而导致性能下降。

1. 核心架构

Nginx 的核心架构主要包括以下几个组件:

主进程(Master Process): 负责加载配置文件并管理工作进程。主进程不处理实际的请求,而是负责分发信号给工作进程,处理日志等。

工作进程(Worker Processes): 实际处理客户端的请求。Nginx 的事件驱动模型使得每个工作进程可以高效地处理多个客户端请求。

事件驱动机制: Nginx 通过 epoll(Linux 下的高效 I/O 多路复用机制)来监控多个套接字,确保在任何套接字准备好读或写时,立即进行相应的操作。这种非阻塞的机制使得 Nginx 在处理大量并发连接时依然能够保持高性能。

2. 请求处理流程

Nginx 处理请求的过程可以分为以下几个步骤:

接收请求: 客户端发起请求,Nginx 主进程接收请求并将其分发给工作进程处理。

反向代理: 如果 Nginx 配置为反向代理服务器,它会将请求转发到后端的应用服务器,并在收到应用服务器的响应后,将其返回给客户端。

静态内容处理: 对于静态文件,如 HTML、CSS、JavaScript 和图片等,Nginx 可以直接从磁盘读取并返回给客户端,而无需经过应用服务器。

响应客户端: Nginx 将生成的响应通过网络返回给客户端,并关闭连接或保持连接以处理后续的请求。

三、Nginx 的常见使用场景

Nginx 的灵活性使得它能够在多种场景中使用。以下是一些常见的 Nginx 使用场景:

1. 作为 HTTP 服务器
Nginx 最常见的用途之一是作为静态内容的 HTTP 服务器。由于其高效的处理能力和低资源消耗,Nginx 在提供静态文件(如 HTML 页面、图片、视频等)时表现非常出色。很多大型网站,如 GitHub、WordPress、Netflix 等,都使用 Nginx 来处理静态内容的传输。

2. 反向代理服务器
Nginx 也经常被用作反向代理服务器,它能够将客户端的请求转发到一个或多个后端服务器,并根据配置的负载均衡算法选择合适的服务器来处理请求。这种架构能够提高网站的可扩展性和可靠性。

3. 负载均衡器
Nginx 支持多种负载均衡算法,可以在多个后端服务器之间分发请求,减轻单个服务器的负载压力,提高整体系统的可用性。此外,Nginx 还可以监控后端服务器的健康状态,自动将请求从不可用的服务器转移到可用的服务器上。

4. SSL/TLS 终结器
Nginx 可以处理 SSL/TLS 加密连接,充当 SSL/TLS 终结器。这意味着它能够在客户端与服务器之间建立加密连接,同时将解密后的请求转发到后端服务器。这样可以减轻后端服务器的负载,并简化 SSL 证书的管理。

5. 动态内容缓存
Nginx 还可以用作缓存服务器,将动态生成的内容缓存一段时间,减少后端服务器的负载,并加快用户的访问速度。这在需要高性能的应用场景中非常有用。

四、nginx源码包的获取

nginx官方下载地址
链接: nginx下载地址
进去后会看到如下页面
image.png

选择合适的版本直接点击下载即可
这里使用1.24版本的nginx
image.png

之后拖到xshell面板内即可
如果拖拽显示0000000

yum -y install lrzsz

五、安装过程

在这里插入图片描述

先安装依赖

yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel

解包

tar xf nginx-1.24.0.tar.gz

编译

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-stream  --with-stream_ssl_module

解释

./configure: 这是用于配置 Nginx 源代码编译选项的脚本。在编译 Nginx 之前,你需要运行这个脚本来选择要包含的模块、安装位置以及其他设置。

--prefix=/usr/local/nginx: 指定 Nginx 的安装目录。此选项将 Nginx 安装在 /usr/local/nginx 目录下。默认情况下,Nginx 安装在 /usr/local/nginx,但你可以使用此选项更改安装位置。

--user=nginx: 指定运行 Nginx 进程的用户。在这个例子中,Nginx 将以 nginx 用户身份运行。这个选项有助于提高安全性,防止 Nginx 进程以 root 用户的身份运行。

--group=nginx: 指定 Nginx 进程所属的用户组。在这个例子中,Nginx 进程将属于 nginx 组。这也有助于提高安全性。

--with-http_ssl_module: 启用 HTTP SSL 模块。这个模块允许 Nginx 使用 HTTPS(通过 SSL/TLS 协议)来加密 HTTP 流量,从而确保客户端和服务器之间的通信安全。

--with-http_v2_module: 启用 HTTP/2 模块。HTTP/2 是 HTTP 协议的最新版本,支持更高效的多路复用、压缩和优先级排序,显著提高了网络性能。

--with-http_realip_module: 启用 HTTP Real IP 模块。这个模块用于更正客户端 IP 地址,特别是在 Nginx 处于反向代理模式下时。它能够将请求的原始客户端 IP 地址从 HTTP 头中提取出来(例如 X-Forwarded-For),而不是使用代理服务器的 IP 地址。

--with-http_gzip_static_module: 启用 HTTP Gzip Static 模块。这个模块用于在发送响应前压缩静态文件,从而减少带宽使用和提高传输速度。该模块可以预压缩文件,然后直接提供压缩后的版本给客户端。

--with-http_stub_status_module: 启用 HTTP Stub Status 模块。这个模块提供了 Nginx 的状态信息,例如当前活动连接数、请求数等,有助于监控 Nginx 的运行状况和性能。

--with-pcre: 启用 PCRE(Perl Compatible Regular Expressions)库的支持。PCRE 用于正则表达式匹配操作,例如在 Nginx 配置中使用 location 块进行路径匹配时需要用到正则表达式。

--with-stream: 启用 TCP/UDP 流处理模块。该模块允许 Nginx 处理 TCP 和 UDP 流量,通常用于反向代理或负载均衡 TCP 和 UDP 流量,例如数据库连接、邮件服务器或其他基于 TCP/UDP 的服务。

--with-stream_ssl_module: 启用 Stream SSL 模块。这个模块允许 Nginx 对 TCP/UDP 流量进行 SSL/TLS 加密处理,通常与 --with-stream 一起使用,以确保在流量传输时提供安全加密。

安装

make && make install

添加环境变量(在root目录下)
vim ~/.bash_profile

export PATH=$PATH:/usr/local/nginx/sbin

加载

source ~/.bash_profile

为什么要做这个配置?
方便我们使用nginx命令
比如说配置之前我们启用nginx

/usr/local/nginx/sbin/nginx

现在

nginx

可以做到简化命令

编辑配置文件
vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述

添加用户

useradd -s /sbin/nologin -M nginx

六、添加成为系统服务

vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

加载

systemctl daemon-reload

这样我们就可以使用systemd命令了
比如

启动nginx

systemctl start nginx

重启nginx

systemctl restart nginx

关闭nginx

systemctl stop nginx
相关文章
kde
|
1月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
kde
764 4
|
1月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
113 5
|
3月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
352 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
4月前
|
Java 应用服务中间件 Docker
java-web部署模式概述
本文总结了现代 Web 开发中 Spring Boot HTTP 接口服务的常见部署模式,包括 Servlet 与 Reactive 模型、内置与外置容器、物理机 / 容器 / 云环境部署及单体与微服务架构,帮助开发者根据实际场景选择合适的方案。
187 25
|
4月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
333 0
|
6月前
|
存储 应用服务中间件 nginx
在使用Nginx之后,如何在web应用中获取用户IP以及相关原理
但总的来说,通过理解网络通信的基础知识,了解http协议以及nginx的工作方式,我们已经能在大多数情况下准确地获取用户的真实IP地址了,在调试问题或者记录日志时会起到很大的帮助。
350 37
|
6月前
|
应用服务中间件 Linux 网络安全
技术指南:如何把docsify项目部署到基于CentOS系统的Nginx中。
总结 与其他部署方法相比,将docsify项目部署到基于CentOS系统的Nginx中比较简单。以上步骤应当帮助你在不花费太多时间的情况下,将你的项目顺利部署到Nginx中。迈出第一步,开始部署你的docsify项目吧!
306 14
|
6月前
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
|
9月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
286 19
|
1月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
222 4