引言
Nginx作为一款高性能的HTTP和反向代理服务器,在现代Web架构中扮演着至关重要的角色。它以轻量级、高并发、低内存消耗等特性深受开发者青睐。本文将解析Nginx的下载安装、核心配置及实践案例,帮助读者快速掌握Nginx的核心应用。
目录
3.关键配置示例: 只认 IP + 端口,用 stream 模块
一、Nginx下载与安装
1.Windows系统安装
- 访问Nginx官方网站下载稳定版本 (nginx: download)
- 解压到本地目录(如
C:\nginx
) - 双击
nginx.exe
启动服务 - 访问
http://localhost
验证安装是否成功如下图:
2.LInux 包管理器安装(推荐,适合快速部署)
适用系统:Ubuntu/Debian、CentOS/RHEL、Fedora
优点:自动解决依赖,支持系统更新;缺点:版本可能较旧。
-
Ubuntu/Debian 系统
# 更新包索引 sudo apt update # 安装 Nginx sudo apt install nginx # 启动并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx
-
CentOS/RHEL 系统
# 若未安装 EPEL 仓库 yum install epel-release -y # 安装 Nginx yum install nginx -y # 启动并设置开机自启 systemctl start nginx systemctl enable nginx
-
验证安装
# 检查版本 nginx -v
3.Linux 源码编译安装(适合定制需求)
优点:可自定义版本、模块;
缺点:步骤复杂,需手动解决依赖。
1. 安装依赖
# Ubuntu/Debian
apt install build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev
# CentOS/RHEL
yum install gcc pcre-devel zlib-devel openssl-devel -y
2. 下载并编译源码
# 下载最新稳定版
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
# 配置(可按需添加模块)
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_stub_status_module
# 编译并安装
make && sudo make install
3. 启动nginx
/usr/local/nginx/sbin/nginx
二、Nginx七层配置
1. 核心概念
七层代理工作在 OSI 模型的应用层,基于 HTTP/HTTPS 协议内容 进行转发。
它能 “读懂” 请求的 URL、Host、请求头、Cookie 等信息,支持复杂的路由规则和高级功能。
2. 典型应用场景
- Web 服务器负载均衡:根据域名或 URL 路径将请求分发到不同后端。
- HTTPS 卸载:Nginx 处理 SSL 加密 / 解密,后端服务器使用 HTTP 通信。
- 静态资源缓存:直接返回本地缓存的图片、CSS、JS 文件,减轻后端压力。
- API 网关:根据 API 路径(如
/user
、/order
)路由到不同微服务。
3. 关键配置示例:看懂协议内容,用 http
模块
# 七层的“专属模块”是 http
http {
# 定义后端服务器组(但转发规则和内容相关)
upstream web_servers {
server 192.168.71.21:8080;
server 192.168.71.22:8080;
}
# 不仅监听端口,还要解析 HTTP 内容
server {
listen 80;
server_name example.com; # 要识别域名(应用层信息)
# 看 URL 路径转发(核心区别!四层做不到)
location / {
proxy_pass http://web_servers; # 根路径转发
}
location /api {
proxy_pass http://api_server; # /api 路径单独转发
}
# 识别文件类型(应用层信息)
location ~* \.jpg$ {
root /var/www/images; # 图片直接返回本地
}
}
}
三、Nginx四层配置
1. 核心概念
四层代理工作在 OSI 模型的传输层,基于 IP 地址和端口 进行转发。
它不解析应用层协议内容(如 HTTP 请求),仅做 “盲转发”,因此效率极高。
2. 典型应用场景
- 数据库代理:转发 MySQL、PostgreSQL 等数据库连接,实现读写分离。
- TCP 服务负载均衡:如 Redis 集群、游戏服务器、SSH 服务的端口转发。
- 高性能转发需求:对延迟敏感的场景(如实时通信),四层转发接近硬件级性能。
3.关键配置示例: 只认 IP + 端口,用 stream
模块
# 四层的“专属模块”是 stream
stream {
# 定义后端服务器组(只写 IP+端口)
upstream mysql_servers {
server 192.168.71.21:3306; # 只关心“地址+端口”
server 192.168.71.22:3306;
}
# 监听端口,收到数据就转发(不看内容)
server {
listen 3306; # 客户端连接的端口
proxy_pass mysql_servers; # 直接转发到上面定义的服务器组
}
}
四、Nginx 负载均衡器 案例
1.功能目标
借助 Nginx 负载均衡功能,将客户端请求合理分配到多台后端 Web 服务器,提升服务并发处理能力与可用性,实现:
- 请求分发:按策略(轮询、权重等)把客户端请求转发给后端服务器。
- 故障容错:后端某台服务器故障时,自动将请求切换到正常服务器,保障服务不中断。
- 会话管理(可选):通过 IP 哈希等策略,让同一客户端请求稳定落在同一台后端服务器,适配有登录态等业务场景。
2.集群设置
服务器规划
服务器 | 功能 | ip |
Nginx 负载均衡器 | 接收并转发客户端 HTTP 请求 | 192.168.71.5 |
后端 Web 服务器1 | 实际处理请求,返回网页内容 | 192.168.71.21 |
后端 Web 服务器2 | 实际处理请求,返回网页内容 | 192.168.71.22 |
软件环境准备
所有服务器:关闭防火墙(测试环境简化操作)
# CentOS/RHEL 系列
systemctl stop firewalld
systemctl disable firewalld
# Ubuntu/Debian 系列
ufw disable
所有服务器:安装 Nginx
# CentOS/RHEL(需先启用 EPEL 源)
yum install -y epel-release
yum install -y nginx
systemctl start nginx # 启动 Nginx 服务
systemctl enable nginx # 设置开机自启
3.配置步骤
3.1 后端 Web 服务器配置
为方便验证负载均衡效果,让两台后端服务器返回不同内容,标识自身身份
后端服务器 1(192.168.71.21
)
echo "Backend Server: 192.168.71.21" > /usr/share/nginx/html/index.html
后端服务器 2(192.168.1.22
)
echo "Backend Server: 192.168.71.22" > /usr/share/nginx/html/index.html
3.2 Nginx 负载均衡器配置
编辑 Nginx 主配置文件(通常路径:/etc/nginx/nginx.conf
或 /etc/nginx/conf.d/default.conf
),添加负载均衡规则:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
# 必须将 upstream 和 server 放在 http 块内
http {
# 定义后端服务器集群,命名为 backend_servers
upstream backend_servers {
server 192.168.71.21:80; # 后端服务器 1
server 192.168.71.22:80; # 后端服务器 2
# 可选策略:weight=2; 或 ip_hash;
}
# 配置虚拟主机,处理客户端请求
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 以下是默认的 HTTP 配置(保留原文件中的其他内容,如日志格式、 mime 类型等)
include /etc/nginx/mime.types;
default_type application/octet-stream;
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;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/conf.d/*.conf;
}
重启 nginx
systemctl restart nginx
4.查看效果
浏览器访问验证
在能访问 Nginx 负载均衡器的机器(如本地电脑、其他服务器)浏览器中,访问 http://192.168.71.5
(负载均衡器 IP )。多次刷新页面,默认轮询策略下,会交替显示两台后端服务器的标识内容,证明请求在两台服务器间分发
也可以用 curl
工具多次发送请求,直观地观察返回结果:
# 连续请求 5 次,查看返回内容
for i in {1..5}; do
curl http://192.168.1.100;
echo -e "\n--- 分割线 ---";
done
结语
通过本文的介绍,我们从 Nginx 的下载安装入手,逐步了解了七层配置、四层配置的核心逻辑,最后通过负载均衡实战案例,将理论知识转化为可操作的实践技能。
Nginx 作为一款轻量高效的服务器工具,其价值不仅在于高性能的转发能力,更在于灵活的配置方式 —— 无论是简单的静态资源托管,还是复杂的多服务负载均衡,都能通过简洁的配置实现。
希望本文能为你使用 Nginx 提供清晰的指引。在实际应用中,不妨结合具体业务场景多做尝试,比如添加 HTTPS 配置、优化缓存策略等,逐步挖掘 Nginx 更强大的功能。遇到问题时,善用官方文档和日志排查,相信你能快速掌握并灵活运用这一实用工具。