编程技术分享平台

网站首页 > 技术教程 正文

网页服务-Nginx - 反向代理 - 基于域名

xnh888 2024-09-10 22:56:11 技术教程 25 ℃ 0 评论

基本环境

底层: 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地址

场景设计

网络场景设计

#    客户端 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
       Site 2 :192.168.41.41  → www.bonkers.poc
访问控制:可以访问 Nginx代理服务器,不能访问客户端PC

客户端 PC 网络连通性测试

#    客户端 PC,IP 172.16.28.146
可以Ping通 Nginx 代理 外网IP 172.16.28.116
无法Ping通 Nginx 代理 内往IP 192.168.31.110 192.168.41.110
无法Ping通 Site_1  192.168.31.31
无法Ping通 Site_2  192.168.41.41

Nginx 网络连通性测试

#    Nginx 代理服务器,外网IP 172.16.26.100,内网IP 172.16.28.110 
可以Ping通 客户端 172.16.26.196
可以Ping通 Site_1  192.168.31.31
可以Ping通 Site_2  192.168.41.41

网站场景设计

#    默认网站 数据目录 WinSvr IIS 已停止
%SystemDrive%\inetpub\wwwroot
#    创建 目录浏览 网站数据目录
Site 1 站点 D:\data\www\Site1\
Site 2 站点 D:\data\www\Site2\
#    设定 网站
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 站点 IP地址 192.168.31.31 192.168.41.41
#    创建 #    创建两个 网站数据目录 使用PowerShell,下同
D:
md data\www\Site1
md data\www\Site2
#    创建 虚拟主机 网站 Site 1 首页文件
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.poc <br> IP 192.168.31.31" > D:\data\www\Site1\index.html
#    创建 虚拟主机 网站 Site 2 首页文件
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.poc <br> IP 192.168.41.41 " > D:\data\www\Site2\index.html
#    访问两个站点,测试可用性
http://192.168.31.31
http://192.168.41.41

客户端 PC Win10 LTSC

#    修改 静态域名解析
echo. >> C:\Windows\System32\drivers\etc\hosts
echo 172.16.26.100 www.srover.com >> C:\Windows\System32\drivers\etc\hosts
echo 172.16.26.100 www.bonkers.com >> C:\Windows\System32\drivers\etc\hosts

创建 代理服务器 配置文件

#   方法 1 : 创建 虚拟主机配置文件
nano /etc/nginx/conf.d/reverse-proxy.conf
#    添加 如下内容
#    {
#    Nginx 代理服务器 专用配置文件
#    /etc/nginx/conf.d/reverse-proxy.conf
#    author: SRover Lee

#    定义上游站点 Site1 www.srover.poc 
#    server 访问地址 192.168.31.31
upstream site1 {
    server 192.168.31.31;
}

#    定义上游站点 Site2 www.bonkers.poc
#    server 访问地址 192.168.41.41
upstream site2 {
    server 192.168.41.41;
}

#    定义 反向代理 Site1 监听端口 80
#    定义 反向代理 Site1 对外访问地址 www.srover.poc
#    定义 反向代理 对内代理地址 http://site1
server {
    listen 80;
    server_name www.srover.poc;
    location / {
        proxy_pass http://site1;
    }
}

#    定义 反向代理 Site1 监听端口 80
#    定义 反向代理 Site1 对外访问地址 www.bonkers.poc 
#    定义 反向代理 对内代理地址 http://site2
server {
    listen 80;
    server_name www.bonkers.poc;
    location / {
        proxy_pass http://site2;
    }
}

#    }

#    方法 2 : 命令行直接创建 虚拟主机 配置文件
sudo cat <<EOF > /etc/nginx/conf.d/reverse-proxy.conf
#    Nginx 代理服务器 专用配置文件
#    /etc/nginx/conf.d/reverse-proxy.conf
#    author: SRover Lee

#    定义上游站点 Site1 www.srover.poc 
#    server 访问地址 192.168.31.31
upstream site1 {
    server 192.168.31.31;
}

#    定义上游站点 Site2 www.bonkers.poc
#    server 访问地址 192.168.41.41
upstream site2 {
    server 192.168.41.41;
}

#    定义 反向代理 Site1 监听端口 80
#    定义 反向代理 Site1 对外访问地址 www.srover.poc
#    定义 反向代理 对内代理地址 http://site1
server {
    listen 80;
    server_name www.srover.poc;
    location / {
        proxy_pass http://site1;
    }
}

#    定义 反向代理 Site1 监听端口 80
#    定义 反向代理 Site1 对外访问地址 www.bonkers.poc 
#    定义 反向代理 对内代理地址 http://site2
server {
    listen 80;
    server_name www.bonkers.poc;
    location / {
        proxy_pass http://site2;
    }
}

EOF

重新启动 Nginx 服务

#    重新启动 Nginx 服务
systemctl restart nginx.service

访问地址

#    Nginx 反向代理 访问地址
#    在 客户端 PC 访问
http://www.srover.poc/
http://www.bonkers.poc/

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表