基本环境
底层: Windows 11 x64
虚拟化层:VMWare Workstation 17.0.2
虚拟化兼容性:ESXi 6.7
虚拟硬件:
CPU: 4 Core
RAM: 16 GB
HDD: 128 GB SCSI
NetWork: NAT
操作系统版本: CentOS 7.9.2207 Mininal
无系统更新
无内核升级
关闭 SELinux
配置 NTP 时间同步
安装 Open VM Tools
美化 CLI
添加 NetWork: 桥接网络
Windows Server 2012 R2 Update
无系统更新
关闭 防火墙
安装 VM Tools
Windows 10 企业版 LTSC 21H2
无系统更新
关闭 防火墙
安装 VM Tools
基本定义
# Nginx代理服务器:是一种高性能的Web服务器和反向代理服务器,具有负载均衡、缓存加速、SSL终端、静态资源服务等多种功能。它在负载均衡、缓存加速、安全过滤等场景中有着广泛的应用。通过合理配置和使用Nginx代理服务器,可以提高系统的性能、可用性和安全性
# 客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址
# 基于开发语言的反向代理,代理服务器会根据客户端访问的页面是哪种开发语言自动选择将访问指向哪个站点,个人感觉这个用途不是很多
场景设计
网络场景设计
# 网络场景设计沿用《网页服务-Nginx - 反向代理 - 基于域名》,因此仅简单讲解网络场景,不做测试
# 客户端 PC
操作系统:Windows 10 企业版 LTSC 21H2
IP地址:172.16.28.146
访问控制:可以访问Nginx代理服务器外网IP,不可访问网站服务器
通过Host文件方式,解析 www.srover.poc、www.bonkers.poc 两个域名到Nginx代理服务器 外网IP
# Nginx 代理服务器
操作系统:CentOS 7.9.2207 Mininal 添加两个网卡
IP地址:外网IP:172.16.28.110
内网IP:192.168.31.110 192.168.41.110
访问控制:外网IP 可以访问 客户端PC ,内网IP可以访问网页服务器
# 网页服务器
操作系统:Windows Server 2012 R2 Update
IP地址:Site 1 :192.168.31.31 → www.srover.poc → HTML 语言
Site 2 :192.168.41.41 → www.bonkers.poc → ASP 语言
访问控制:可以访问 Nginx代理服务器,不能访问客户端PC
网站场景设计
# 默认网站 数据目录 WinSvr IIS 已停止
%SystemDrive%\inetpub\wwwroot
# 沿用 《网页服务-Nginx - 反向代理 - 基于域名》 创建的两个 Site
# 定义网站数据目录
Site 1 站点 D:\data\www\Site1\ HTML语言 站点
Site 2 站点 D:\data\www\Site2\ ASP语言 站点
# 设定 网站
Site 1 站点 D:\data\www\Site1\ 访问路径为 192.168.31.31 → 指向域名:www.srover.poc
Site 2 站点 D:\data\www\Site2\ 访问路径为 192.168.41.41 → 指向域名:www.bonkers.poc
前置准备
网页服务器 WinSvr 2012R2
# 安装 IIS ,详情见另外文档
# 删除原 Site 2 首页文件
del D:\data\www\Site2\index.html
# 创建 虚拟主机 网站 Site 1 首页文件
echo echo "Welcom To FourLeaf Studio by VT Host Domain Name Site 2 <br> Web Data D:\data\www\Site2\ <br> Web Domain Name Add www.bonkers.com <br> IP 192.168.41.41 <br> Language: ASP " > D:\data\www\Site2\Index.asp
# 创建 虚拟主机 网站 Site 2 首页文件
# 重新创建 两个 Site 的首页文件
echo " Welcom To FourLeaf Studio by VT Host Domain Name Site 1 <br> Web Data D:\data\www\Site1\ <br> Web Domain Name Add www.srover.com <br> IP 192.168.31.31 <br> Language: HTML" > D:\data\www\Site1\index.html
# 访问两个站点,测试可用性
http://192.168.31.31
http://192.168.41.41
Nginx 防火墙管理
# 防火墙放行 Nginx 8081 端口
firewall-cmd --permanent --zone=public --add-port=8081/tcp
# 生效 防火墙策略
firewall-cmd --reload
编辑 代理服务器 配置文件
# 方法 1 : 编辑 虚拟主机配置文件
nano /etc/nginx/conf.d/reverse-proxy.conf
# 添加 如下内容
# {
# 定义上游站点 Site HTML
# server 访问地址 192.168.31.31
# 基于 HTML 语言 页面
upstream html {
server 192.168.31.31;
}
# 定义上游站点 Site ASP
# server 访问地址 192.168.41.41
# 基于 ASPL 语言 页面
upstream asp {
server 192.168.41.41;
}
# 定义 反向代理 监听端口 8081
# 定义 HTML 语言站点为 http://html
# 定义 ASP 语言站点为 http://asp
server {
listen 8081;
location ~*\.html$ {
proxy_pass http://html;
}
# 定义 反向代理 对内代理地址 http://asp
location ~*\.asp$ {
proxy_pass http://asp;
}
}
# }
# 方法 2 : 命令行直接创建 虚拟主机 配置文件
sudo cat <<EOF >> /etc/nginx/conf.d/reverse-proxy.conf
# 定义上游站点 Site HTML
# server 访问地址 192.168.31.31
# 基于 HTML 语言 页面
upstream html {
server 192.168.31.31;
}
# 定义上游站点 Site ASP
# server 访问地址 192.168.41.41
# 基于 ASPL 语言 页面
upstream asp {
server 192.168.41.41;
}
# 定义 反向代理 监听端口 8081
# 定义 HTML 语言站点为 http://html
# 定义 ASP 语言站点为 http://asp
server {
listen 8081;
location ~*\.html$ {
proxy_pass http://html;
}
# 定义 反向代理 对内代理地址 http://asp
location ~*\.asp$ {
proxy_pass http://asp;
}
}
EOF
重新启动 Nginx 服务
# 重新启动 Nginx 服务
systemctl restart nginx.service
访问地址
# Nginx 反向代理 访问地址
# 在 客户端 PC 访问
http://172.16.28.110:8081/index.html
http://172.16.28.110:8081/Index.asp
# 由于在《网页服务-Nginx - 反向代理 - 基于域名》 中曾经做过静态域名解析,因此可以使用域名访问
http://www.srover.poc:8081/index.html
http://www.srover.poc:8081/Index.asp