概念说明
什么是反向代理
反向代理是一种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后反向代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。简单理解为用户直接访问反向代理服务器就可以获得目标服务器的资源。这一过程叫反向代理
功能介绍
Nginx 可以作为反向代理服务器,接收客户端的请求,并将请求转发到后端的真实服务器上。通过反向代理,可以实现负载均衡、缓存加速、SSL 终端、安全过滤等功能。
- 「 负载均衡」:Nginx 可以通过反向代理实现负载均衡,将请求分发到多个后端服务器上,从而提高系统的并发处理能力和可用性。常见的负载均衡算法有轮询、IP 哈希、最少连接等。
- 「 缓存加速 」:Nginx 可以缓存静态资源或动态页面,减少后端服务器的负载,提高响应速度。通过设置缓存时间、缓存规则等参数,可以灵活地控制缓存策略。
- 「 SSL终端 」:Nginx 可以作为 SSL 终端,接收 HTTPS 请求并进行 SSL/TLS 解密,然后将解密后的请求转发给后端服务器。这样可以减轻后端服务器的负担,提高安全性和性能。
- 「 安全过滤」:Nginx 可以通过反向代理实现安全过滤功能,例如防止恶意请求、DDoS 攻击、SQL 注入等。通过配置访问控制规则、限制请求频率等方式,可以提高系统的安全性。
- 「 配置文件」:Nginx 的反向代理功能通过配置文件进行配置。配置文件包含了全局配置、http 配置和 server 配置等部分,可以设置监听端口、代理规则、缓存配置、负载均衡策略等。
- 「 超高性能 」:Nginx 具有高性能的特点,采用异步非阻塞的事件驱动模型,可以处理大量并发连接。同时,Nginx 的内存消耗较低,适合在资源有限的环境中使用。
以下实验是在云端源想IT一站式智能学习平台------云端实验上进行,点击查看学习更多部署实验........
下面我们来实验具体实现
拖建环境
从左侧设备列表左键按住拖建两台服务器和一台客户端
环境系统为 Ubuntu Linux
系统
下面开始介绍部署的具体实现步骤
服务器1:后端服务器
搭建一个 nginx静态web服务器 作为后端服务器
1.启动服务器并进入终端操作
右键点击服务器-选择启动服务
启动后,右键点击服务器-选择打开终端,进入服务器的控制终端
终端界面,可点击全屏展示
2.安装Nginx
终端内(可全屏操作)
更新本地软件包列表
sql
apt update
使用命令安装Nginx
apt install nginx
出现需确认才可继续执行时 输入 Y 继续执行
kotlin
Need to get 4032 kB of archives.
After this operation, 12.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
使用查看命令查看Nginx是否安装成功
nginx -v
出现Nginx的版本 说明安装成功
yaml
nginx version: nginx/1.18.0 (Ubuntu)
3.配置Nginx
- 我们选择将自己的配置文件放在
/etc/nginx/conf.d/
路径下,进入/etc/nginx/conf.d/
路径目录,并创建配置文件myweb.conf
bash
cd /etc/nginx/conf.d/
touch myweb.conf
- 我们需要的
server
配置内容为下面代码块内容:
ini
server {
listen 80;
server_name 172.17.0.53;
root /usr/local/share/myweb;
location / {
allow all;
}
}
配置文件内容,我们需要首先获取知道自己的IP地址,将其用作 server_name
- 获取服务器IP地址
sql
ip addr show eth0
该命令会输出容器内默认网卡 eth0
网卡的信息。 我们在 inet
后找到IP地址。
或者查看设备名称下已显示IP地址
-
找到IP地址后,查看并编辑配置文件
myweb.conf
vim myweb.conf
-
正确输入上述
server
块内内容,并确保server_name
对应地址正确
保存并关闭
4.创建指定Nginx服务器根目录
- 创建根目录
进入 /usr/local/share/
目录,并在其下用 mkdir
创建我们的根目录,可使用 ll
命令查看是否正确创建
bash
cd /usr/local/share/
mkdir myweb
- 在根目录下,创建一个静态web文件
backend_server.html
bash
cd /usr/local/share/myweb/
touch backend_server.html
-
编辑文件
vim backend_server.html
-
文件内容为:
xml
<!DOCTYPE html>
<html>
<head>
<title>Backend Server Information</title>
</head>
<body>
<h1>Welcome to the Backend Server!</h1>
<p>This is some information from the backend server.</p>
</body>
</html>
保存并退出,可使用 cat backend_server.html
查看内容是否正确保存
- 至此,我们的
server
块内容全部获取并做好了配置文件,下面我们来启动Nginx服务并校验配置是否正确生效
5.启动Nginx
- 启动Nginx服务后再查看Nginx服务状态是否正常启动并正在运行
lua
service nginx start
service nginx status
Nginx服务已经正常启动了
至此 后端Nginx服务器及其配置已全部完成,下面我们来安装配置 Nginx 反向代理服务器
服务器2:nginx反向代理服务器
安装并配置Nginx反向代理服务器
1.启动服务器2并进入终端操作
右键点击服务器2-选择启动服务
启动后,右键点击服务器2-选择打开终端,进入服务器的控制终端
终端界面,可点击全屏展示
2.安装Nginx
终端内(可全屏操作)
更新本地软件包列表
sql
apt update
使用命令安装Nginx
apt install nginx
出现需确认才可继续执行时 输入 Y 继续执行
kotlin
Need to get 4032 kB of archives.
After this operation, 12.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
使用查看命令查看Nginx是否安装成功
nginx -v
出现Nginx的版本 说明安装成功
yaml
nginx version: nginx/1.18.0 (Ubuntu)
3.配置Nginx
- 我们选择将反向代理的配置文件放在
/etc/nginx/conf.d/
路径下,进入/etc/nginx/conf.d/
路径目录,并创建配置文件reverse_proxy.conf
bash
cd /etc/nginx/conf.d/
touch reverse_proxy.conf
- 我们需要的
server
配置内容为下面代码块内容:
ini
server {
listen 80;
server_name 172.17.0.55;
location / {
proxy_pass http://172.17.0.53:80;
}
}
配置文件内容,我们需要首先获取知道自己的IP地址,将其用作 server_name
proxy_pass
将其IP配置为 后端服务器的IP及端口,以做访问转发
- 获取服务器IP地址
sql
ip addr show eth0
该命令会输出容器内默认网卡 eth0
网卡的信息。 我们在 inet
后找到IP地址。
或者查看设备名称下已显示IP地址
-
找到IP地址后,查看并编辑配置文件
reverse_proxy.conf
vim reverse_proxy.conf
-
正确输入上述
server
块内内容,并确保server_name
对应地址正确,以及正确填写了后端服务器IP及其端口号
保存并关闭
4.启动Nginx
- 启动Nginx服务后再查看Nginx服务状态是否正常启动并正在运行
lua
service nginx start
service nginx status
Nginx服务已经正常启动了
至此 后端Nginx反向代理服务器及其配置已全部完成,下面我们来使用客户端测试其访问是否正常
客户端:验证访问
先验证客户端上访问后端服务器上Nginx静态Web服务器内页面
1.启动客户端服务并构建客户端到后端服务器的访问权限
- 右键点击客户端-启动服务,启动客户端服务器
- 连线:连接一条客户端指向后端服务器的连线,以创建从客户端到后端服务器的访问权限
2.客户端通过IP访问服务器上静态文件
- 客户端进入终端
右键点击客户端-打开操作终端
- 使用命令
curl
命令访问服务器上的静态页面
先安装 curl
命令
markdown
apt update
apt install curl
访问静态页面
arduino
curl http://172.17.0.53/backend_server.html
可以看到,我们通过直接访问后端服务器是可以看到静态页面的内容的
下面我们继续测试反向代理服务器是否正常
再验证客户端上通过反向代理服务器是否能正常访问到后端服务器的页面内容
1.重新构建客户端到服务器2(反向代理服务器),服务器2到服务器1(后端服务器) 的访问权限
- 双击之前客户端到服务器1的权限连线,删除访问权限
- 连线:重新构建客户端到服务器2(反向代理服务器),服务器2到服务器1(后端服务器) 的访问权限
2.客户端通过IP访问反向代理服务器
- 使用命令
curl
命令访问服务器上的静态页面
访问静态页面
arduino
curl http://172.17.0.55/backend_server.html
可以看到,我们通过直接访问Nginx反向代理服务器,依然是可以正常访问到后端服务器内的页面内容
至此,Nginx反向代理实验结束