正向代理

正向代理是代理客户端发起请求的中间服务器,客户端主动指定代理节点,由代理代替客户端访问目标服务器,目标服务器无法感知真实客户端身份,仅记录代理服务器信息。
核心角色 :客户端 → 正向代理服务器 → 目标服务器 核心作用:隐藏客户端真实IP、突破访问限制、加速网络请求、审计管控流量
适用场景
-
突破网络限制:访问外网资源、跨地域/跨网段访问受限服务
-
隐私保护:隐藏客户端公网IP,防止溯源追踪
-
企业流量管控:统一审计员工外网访问行为、过滤恶意网站
-
请求加速:缓存外网资源,减少重复请求耗时
配置正向代理
编辑主配置文件添加正向代理相关配置:
vim /usr/local/nginx/conf/nginx.conf
现在nginx是代理不是网站,所以这个没有用,删除里面内容



判断语法是否有错:nginx -t
重新加载nginx的配置文件
nginx -s reload
验证正向代表
在Windows中,使用浏览器,设置http和https代理
- 管理员切换到普通用户,打开浏览器
- 在搜索框搜索代理------打开使用代理服务器
- 输入nginx的地址和端口号
在Linux中,使用命令curl,指定代理服务器进行访问测试
curl -x http://192.168.10.101:8080 www.baidu.com
查找nginx的访问目录logs
cat access.log
反向代理

位于服务端一侧 的中间代理服务器,对外接收客户端请求,对内转发至后端真实业务服务器,最终将响应结果返回给客户端。客户端无感知代理存在,默认认为直接访问目标服务。
核心优势
-
隐藏后端节点:杜绝后端真实IP暴露,防范直接攻击、端口扫描,降低安全风险
-
负载均衡分发:将海量请求均匀分发至多台后端服务器,避免单点故障,提升并发承载能力
-
统一入口管控:集中处理SSL证书、域名解析、请求过滤、跨域配置、日志审计,简化运维
-
性能优化提速:实现静态资源缓存、GZIP压缩、HTTP/2升级,减轻后端服务压力
-
协议适配转换:代理层做协议兼容(如HTTP转HTTPS、WebSocket代理),后端无需改造
高频适用场景
-
Web服务集群入口、微服务API网关
-
前后端分离项目的接口转发与跨域解决
-
HTTPS统一部署(SSL卸载,后端仅需HTTP)
-
服务器灰度发布、故障熔断、请求限流
-
静态资源缓存与动静分离部署
配置nginx七层代理
在192.168.10.102上配置环境(httpd)
cp nginx.conf.default nginx.conf
关闭防火墙
systemctl stop firewalld
安装依赖包
dnf install httpd -y
指向网页文件的追加内容
echo "这是后端主机" >/var/www/html/index.html(vim /var/www/html/index.html)
启动httpd服务
systemctl start httpd
在192.168.10.101上配置nginx七层代理转发
进入nginx系统的主配置文件nginx.conf
vim /usr/local/nginx/conf/nginx.conf
要在http{ }和server{ }之间写


查看语法是否有错
nginx -t
重启nginx服务
nginx -s reload
在192.168.10.102中测试转发效果
curl 192.168.10.101
配置四层代理
- 配置nginx四层代理--实现代理ssh请求至后端服务器,用以登录内网服务器
在192.168.10.101上
修改nginx的主配置文件
vim /usr/local/nginx/conf/nginx.conf
这个stream需要与http{ }模块评级,****++不能再在http{ }中嵌套++
stream {
upstream_ssh_cluster {
server 192.168.10.102:22;
}
server {
listen 2222;
proxy_pass ssh_cluster;
proxy_connect_time 5s;
proxy_timeout 1h;
}
}

查看语法是否有错
nginx -t
重启nginx配置
nginx -s reload
查看端口被哪个程序占用
ss -nlpt |grep 2222
验证四层代理
在103中
ssh -p2222 192.168.10.101
yes
aptech1!
正向代理 VS 反向代理(核心区别)
| 对比维度 | 正向代理 | 反向代理 |
|---|---|---|
| 代理对象 | 代理客户端,为客户端服务 | 代理服务器,为后端服务服务 |
| 部署位置 | 客户端侧/公网节点 | 服务端侧/集群入口 |
| 感知方 | 客户端知晓代理存在 | 客户端无感知,视为直接访问目标 |
| 典型场景 | 翻墙、内网访问外网、流量审计 | 负载均衡、SSL卸载、接口转发 |
| Nginx配置 | 依赖resolver解析域名、proxy_pass转发 | 指定后端upstream、路由匹配 |
Nginx缓存

属于反向代理缓存,将后端服务器(Tomcat/Node/PHP)的响应结果缓存到本地磁盘/内存,后续相同请求直接返回缓存副本,无需转发到后端。
-
核心优势:降低后端服务器压力、缩短请求响应时间、节省带宽资源、提升站点并发承载能力
-
适用场景:静态资源(图片/JS/CSS/静态HTML)、低频更新动态接口、首页/列表页等公共页面
-
不适用场景:高频更新接口、用户个性化数据、登录态相关接口、实时数据接口
代理缓存原理:
第一步:客户端第一次向 Nginx 请求数据 A;
第二步:当 Nginx 发现缓存中没有数据 A 时,会向服务端请求数据 A;
第三步:服务端接收到 Nginx 发来的请求,则返回数据 A 到 Nginx,并且缓存在 Nginx;
第四步:Nginx 返回数据 A 给客户端应用;
第五步:客户端第二次向 Nginx 请求数据 A;
第六步:当 Nginx 发现缓存中存在数据 A 时,则不会请求服务端;
第七步:Nginx 把缓存中的数据 A 返回给客户端应用。
缓存核心组件
-
proxy_cache_path :定义缓存存储路径、内存索引区、缓存层级、淘汰策略,必须配置在http块
-
proxy_cache:启用缓存,关联对应的缓存路径
-
proxy_cache_valid:设置不同响应码的缓存有效期
-
proxy_cache_key:缓存唯一标识,默认按请求URL生成,可自定义区分移动端/域名/参数
-
缓存淘汰机制:LRU(最近最少使用)+ 磁盘容量阈值,满额自动清理冷门缓存
反向代理配置
进入nginx的主配置文件
vim /etc/local/nginx/conf/nginx.conf
在http{ }和server{ }之间


查看语法是否有错
nginx -t
重启nginx配置
nginx -s reload
设置缓存功能
创建缓存目录
mkdir -p /data/nginx/cache
设置权限
chown nginx:nginx /data/nginx/cache -R
进入nginx的主配置文件
vim /etc/local/nginx/conf/nginx.conf


验证缓存功能
在192.168.101.103中
curl -I 192.168.10.101
-I:可以查看头部信息

在101中:conf中有个cache

查看缓存目录发现已缓存数据
ls /data/nginx/cache
Nginx rewrite和正则
| 字符 | 描述 |
|---|---|
| ^ | 匹配输入字符串的起始位置 |
| $ | 匹配输入字符串的结束位置 |
| * | 匹配前面的字符零次或多次。如 "ol*" 能匹配 "o" 及 "ol"、"oll" |
| + | 匹配前面的字符一次或多次。如 "ol+" 能匹配 "ol" 及 "oll"、"oll",但不能匹配 "o" |
| ? | 匹配前面的字符零次或一次,例如 "do (es)?" 能匹配 "do" 或者 "does","?" 等效于 "{0,1}" |
| . | 匹配除 "\n" 之外的任何单个字符,若要匹配包括 "\n" 在内的任意字符,请使用诸如 "[.\n]" 之类的模式 |
| \ | 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如 "\n" 匹配一个换行符,而 "" 则匹配 "" |
| \d | 匹配纯数字 |
| {n} | 重复 n 次 |
| {n,} | 重复 n 次或更多次 |
| [c] | 匹配单个字符 c |
| [a-z] | 匹配 a-z 小写字母的任意一个 |
| [a-zA-Z] | 匹配 a-z 小写字母或 A-Z 大写字母的任意一个 |
Rewrite
语法:

regex: 正则匹配URL字符串(只能对域名后边的除去传递的参数外的字符串起作用,例如 http://www.kgc.com/index.php?id=1 只对/index.php 重写)
replacement: 重写跳转后的地址
flag类型:
last: 重写后的 URI 会重新触发 location 匹配,并执行新匹配到的location块中的指令,是默认类型
break: 重写后的 URI 不会重新匹配 location,直接在当前 location 中处理,且后续的 rewrite 指令不再执行
redirect: 返回302临时重定向,浏览器地址会显示跳转后的 URL 地址,爬虫不会更新url(因为是临时)
permanent: 返回301永久重定向,浏览器地址栏会显示跳转后的 URL 地址,爬虫更新url。
Rewrite场景
(1)rewrite flag验证

总结
通过掌握 Nginx 的反向代理、正向代理、缓存功能,以及了解 rewrite 和正则表达式的应用,我们能够更灵活地配置和优化 Nginx 服务器,提升网站的性能、安全性和用户体验,构建出高效稳定的 Web 应用架构。