【实战教程】一文掌握Nginx反向代理部署,轻松提升网站性能!

概念说明

什么是反向代理

反向代理是一种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后反向代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。简单理解为用户直接访问反向代理服务器就可以获得目标服务器的资源。这一过程叫反向代理

功能介绍

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反向代理实验结束

相关推荐
2401_857622661 小时前
SpringBoot框架下校园资料库的构建与优化
spring boot·后端·php
2402_857589361 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
哎呦没3 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch3 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
杨哥带你写代码4 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
AskHarries5 小时前
读《show your work》的一点感悟
后端
A尘埃5 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23075 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端
Marst Code5 小时前
(Django)初步使用
后端·python·django
代码之光_19805 小时前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端