欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 【web服务_负载均衡Nginx】一、Nginx 基础与核心概念解析

【web服务_负载均衡Nginx】一、Nginx 基础与核心概念解析

2025/4/21 17:03:00 来源:https://blog.csdn.net/qq_58611691/article/details/147307131  浏览:    关键词:【web服务_负载均衡Nginx】一、Nginx 基础与核心概念解析

一、Nginx 概述:从起源到行业地位​

Nginx(发音为 “engine x”)是一款高性能的开源 Web 服务器、反向代理服务器,同时具备负载均衡、内容缓存、TCP/UDP 代理及邮件代理等功能。它由俄罗斯工程师伊戈尔・赛索耶夫(Igor Sysoev)为Rambler.ru站点开发,于 2004 年 10 月 4 日以 2-clause BSD 许可协议发布首个公开版本。凭借其轻量级架构与卓越的高并发处理能力,Nginx 迅速在全球 Web 市场占据重要地位。​

在国内,百度、京东、新浪等头部互联网企业均将 Nginx 作为核心 Web 服务器。据 Netcraft 统计,截至 2024 年,Nginx 在全球活跃网站的 Web 服务器市场份额已超 35%,成为高并发场景下的首选技术方案。​

二、CentOS 7 环境搭建:Nginx 的安装与启动​

2.1 安装依赖包​

在 CentOS 7 系统中,Nginx 的安装需依赖gcc、pcre、zlib等编译工具。通过以下命令安装:

sudo yum install -y gcc pcre-devel zlib-devel

执行上述命令后,系统将自动下载并安装所需依赖包。​

2.2 下载与编译 Nginx​

从 Nginx 官方网站(Index of /download/)获取最新稳定版源码,本文以nginx-1.23.3为例:

wget https://nginx.org/download/nginx-1.23.3.tar.gz
tar -zxvf nginx-1.23.3.tar.gz
cd nginx-1.23.3

进入源码目录后,通过./configure命令配置编译参数:

./configure \
--prefix=/usr/local/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_stub_status_module

参数说明:​

  • --prefix:指定 Nginx 安装目录​
  • --conf-path:配置文件路径​
  • --pid-path:PID 文件路径​
  • --error-log-path:错误日志路径​
  • --http-log-path:访问日志路径​
  • --with-http_ssl_module:启用 SSL 模块​
  • --with-http_gzip_static_module:支持静态 Gzip 压缩​
  • --with-http_stub_status_module:启用状态统计模块

编译并安装:

make && sudo make install

 2.3 启动与验证​

安装完成后,可通过以下命令启动 Nginx:

sudo /usr/local/nginx/sbin/nginx

验证 Nginx 是否正常运行:

sudo netstat -tunlp | grep nginx

若出现类似下图所示的监听端口(默认 80端口),则表示 Nginx 已成功启动:

或者通过查看服务状态来监测是否启动:

sudo systemctl status nginx

如果出现下图中的 状态显示为active(running),则表示正常运行了。

三、Nginx 架构剖析:Master-Worker 模型​

3.1 进程结构分析​

Nginx 采用多进程架构,包含一个 master 进程与多个 worker 进程。通过ps -ef | grep nginx命令查看进程状态:

master 进程职责:​

  • 读取并校验配置文件(nginx.conf)​
  • 管理 worker 进程生命周期(启动、停止、重启)​
  • 接收信号(如SIGHUP用于重新加载配置)​

worker 进程职责:​

  • 处理客户端请求,通过事件驱动模型实现高并发​
  • 共享 master 进程打开的文件描述符​

3.2 事件驱动机制​

Nginx 基于事件驱动的多路复用器(如 epoll、kqueue)处理网络 IO。以 epoll 为例,其通过epoll_wait函数高效监听大量文件描述符,当有事件发生时才唤醒进程处理请求,相比传统 BIO(阻塞式 IO)显著降低资源消耗。

四、配置文件详解:nginx.conf 的核心模块​

Nginx 配置文件采用模块化结构,主要分为main、events、http三大块,其中http块下可嵌套多个server子模块。​

4.1 全局配置(main 块)

user nginx nginx;        # 指定运行用户和用户组
worker_processes auto;   # 自动根据CPU核心数设置worker进程数
error_log /var/log/nginx/error.log warn;  # 错误日志路径与级别
pid /var/run/nginx.pid;  # PID文件路径

4.2 事件配置(events 块)

events {worker_connections 1024;  # 每个worker进程最大连接数multi_accept on;          # 允许同时接收多个新连接use epoll;                # 使用epoll事件模型
}

4.3 HTTP 核心配置(http 块)

http {include mime.types;       # 引入MIME类型定义default_type application/octet-stream;  # 默认MIME类型log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';  # 日志格式access_log /var/log/nginx/access.log main;  # 访问日志路径与格式sendfile on;              # 启用零拷贝传输tcp_nopush on;            # 合并网络包tcp_nodelay on;           # 禁用Nagle算法keepalive_timeout 65;     # 长连接超时时间gzip on;                  # 启用Gzip压缩gzip_comp_level 6;        # 压缩级别gzip_types text/plain application/json;  # 压缩文件类型
}

4.4 虚拟主机配置(server 块)

server {listen 80;                # 监听端口server_name example.com;  # 域名location / {root /var/www/html;   # 网站根目录index index.html;     # 默认首页}error_page 500 502 503 504 /50x.html;  # 错误页面映射location = /50x.html {root html;}
}

五、实战演练:搭建静态网站​

5.1 准备网站文件​

在/var/www/html目录下创建index.html文件:

sudo mkdir -p /var/www/html
sudo echo "<h1>Welcome to Nginx!</h1>" > /var/www/html/index.html
sudo chown -R nginx:nginx /var/www/html

5.2 配置虚拟主机​

修改/etc/nginx/nginx.conf,添加或修改server块:

server {listen 80;server_name your_domain.com;location / {root /var/www/html;index index.html;}
}

5.3 重载配置并访问

sudo nginx -s reload

在浏览器输入服务器 IP 或域名,即可看到如下页面:

六、常见管理命令与故障排查​

6.1 常用命令

命令

说明

sudo nginx

启动 Nginx

sudo nginx -s stop

快速停止 Nginx

sudo nginx -s quit

优雅停止 Nginx

sudo nginx -s reload

重新加载配置文件

sudo nginx -t

检查配置文件语法

6.2 故障排查​

若 Nginx 无法启动,可通过以下步骤排查:​

        1、检查/var/log/nginx/error.log错误日志​

        2、使用nginx -t验证配置文件语法​

        3、确认端口占用情况(如80端口被其他进程占用)

本篇文章通过在Centos7环境下的实操案例,简单介绍了nginx的起源、基础架构、核心配置和典型的web应用。后续文章将持续更新nginx进阶的功能点和技术栈。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词