Nginx从入门到实战:正向代理、反向代理、负载均衡及前端部署详解
随着业务流量不断增长,单台服务器往往难以承受高并发访问的压力。此时,我们需要多台服务器共同承担负载,但随之而来的 Session 统一、请求分发等问题也需要解决。
Nginx 正是解决这些问题的利器。它是一款高性能的 HTTP 和反向代理 Web 服务器,占用内存极小(约1MB),却能支持高达 5万个并发连接。
正如业界所说:“没有什么是加一层解决不了的,如果有,就再加一层。”
第一章:核心概念
1. Nginx 概述
-
当访问量增大,单台服务器无法承受时,需要引入多台服务器。
-
多台服务器需要统一管理 Session 和请求分发。
-
Nginx 作为中间层,起到代理和调度作用。
-
它支持反向代理和负载均衡,能够根据服务器性能(如内存大小)合理分配请求。
特点:轻量、高并发、配置灵活。
2. 正向代理 vs 反向代理
正向代理
-
代理对象:客户端
-
典型场景:访问特定网络资源的中间代理服务
-
流程示意:
客户端1/2/3 ---> 代理服务器 ---> 外部服务器
反向代理
-
代理对象:服务器端
-
典型场景:Nginx 代理后端多台应用服务器
-
流程示意:
客户端 ---> 云服务器(Nginx) ---> 后端服务器1/2/3
区别总结:正向代理隐藏客户端,反向代理隐藏服务端。
3. 负载均衡策略
| 策略 | 说明 |
|---|---|
| 轮询 | 请求轮流分发到每台服务器 |
| 加权轮询 | 按权重比例分发,权重越高,接收请求越多 |
| IP Hash | 根据客户端 IP 的哈希值分配服务器 |
| 动静分离 | 静态资源(如图片、CSS)由 Nginx 直接返回,不经过后端 |
生产环境建议:Session 共享更多依赖 Redis 等分布式缓存,而非单纯依赖 IP Hash。
第二章:安装与常用命令
4. Nginx 安装
Windows 安装
-
下载解压,例如:
C:\IT\Nginx\nginx-1.22.1 -
双击
nginx.exe启动 -
访问
http://localhost验证
bash
cd C:\IT\Nginx\nginx-1.22.1 nginx.exe
Linux 安装(CentOS / RHEL)
1. 安装依赖:
bash
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
2. 下载并解压:
bash
wget http://nginx.org/download/nginx-1.13.7.tar.gz tar -xvf nginx-1.13.7.tar.gz cd nginx-1.13.7
3. 编译安装:
bash
./configure make make install
注意:若编译报错
ngx_user.c或-Werror,可分别注释相关行或删除-Werror参数。
4. 启动与管理:
bash
cd /usr/local/nginx/sbin ./nginx # 启动 ./nginx -s stop # 停止 ./nginx -s reload # 重载配置
5. 设置开机自启:
bash
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local chmod +x /etc/rc.local
6. 查看进程:
bash
ps -ef | grep nginx
5. 常用命令与配置
配置文件位置:
bash
vim /usr/local/nginx/conf/nginx.conf
常见排错:
-
错误信息:
unknown directive "" -
解决方案:使用 Notepad++ 将文件转为 UTF-8 无 BOM 格式。
基础配置结构:
nginx
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /root/site/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
}
}
第三章:实战总结
6. 负载均衡实战
环境准备
-
Linux 服务器 IP:
192.168.0.105 -
启动两个 Spring Boot 服务,分别监听
9001和9002端口
配置负载均衡
nginx
upstream myapp {
server 192.168.0.105:9001 weight=1;
server 192.168.0.105:9002 weight=2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myapp;
}
}
权重说明:
weight=2的服务器接收的请求量是weight=1的两倍,适合根据服务器性能(如 64G 内存 vs 8G 内存)进行合理分配。
重载配置:
bash
cd /usr/local/nginx/sbin ./nginx -s reload
测试效果:访问 http://192.168.0.105/port,会交替显示 9001 和 9002,且权重高的端口出现频率更高。
支持域名与外网 IP
Nginx 的 upstream 不仅支持内网 IP,也支持公网 IP 和域名,配置非常灵活:
nginx
upstream myapp {
server 192.168.0.105:9001 weight=1;
server wdfgdzx.top:8080 weight=3; # 支持域名配置
}
7. 前端项目部署
步骤概览
-
前端打包:
bash
npm run build
生成
dist目录 -
上传文件:将
dist上传到服务器,例如:/root/site/UserInterface/dist -
配置 Nginx:
nginx
user root;
server {
listen 80;
server_name localhost;
location / {
root /root/site/UserInterface/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
}
-
重载 Nginx:
bash
cd /usr/local/nginx/sbin ./nginx -s reload
技术要点:
try_files $uri $uri/ /index.html用于支持 Vue/React 等前端路由的 History 模式,解决刷新页面404的问题。
小结
通过本篇文章,我们学习了:
-
Nginx 的基本概念及正向/反向代理的区别
-
常见的负载均衡策略与适用场景
-
Nginx 在 Windows 和 Linux 下的安装与基本命令
-
实战配置负载均衡、反向代理及前端项目部署
Nginx 是一个极其强大且轻量的工具,掌握它对后端开发、运维及架构设计都大有裨益。
进阶思考:如何结合 Keepalived 实现 Nginx 高可用?如何配置 HTTPS 与 HTTP 重定向?欢迎继续探索!
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)