当前位置: 首页 > article >正文

nginx反向代理单台 Web 服务器实验

一、Nginx 反向代理笔记

(一)什么是反向代理

  • 反向代理服务器位于客户端和目标 Web 服务器之间,客户端向反向代理服务器发送请求,反向代理服务器将请求转发到目标 Web 服务器,并将目标 Web 服务器的响应返回给客户端,对客户端而言,它不知道请求实际上是被转发到了后端的目标服务器,看起来就像是反向代理服务器在处理请求。

(二)反向代理的作用

  • 隐藏后端服务器信息:客户端只能看到反向代理服务器的 IP 地址和端口,无法得知后端真实服务器的具体信息,提高了安全性,防止后端服务器被直接攻击。
  • 负载均衡:当有多个后端服务器时,可以根据一定的策略(如轮询、IP 哈希、权重等)将客户端请求均匀地分配到不同的后端服务器上,实现高效的资源利用和高可用性。不过在单台后端服务器的情况下,这一优势暂不体现。
  • 缓存静态资源:反向代理服务器可以缓存后端服务器返回的静态资源(如图片、样式表、脚本等),当客户端再次请求相同资源时,直接从缓存中返回,减少后端服务器的压力和网络传输延迟,提高响应速度。

(三)Nginx 反向代理的配置指令

  • server 块:在 Nginx 配置文件中,使用 server 块来定义一个虚拟服务器,包括监听的 IP 地址、端口以及相关的 location 等配置。
  • location 块:在 server 块内,可以使用多个 location 块来匹配不同的 URI(路径),针对不同的路径可以设置不同的反向代理规则,例如将 /blog 路径下的请求转发到特定的后端服务器上的 /blog 目录。
  • proxy_pass:这是实现反向代理的关键指令,用于指定后端目标服务器的地址(可以是 IP 地址或域名以及端口),例如 proxy_pass http://backend_server;,将请求转发到名为 backend_server 的后端服务器上。
  • proxy_set_header:用于设置转发到后端服务器的请求头信息,例如可以设置 HostX-Real-IP 等头信息,确保后端服务器能正确获取客户端的相关信息,像 proxy_set_header Host $host; 会将客户端请求中的 Host 头信息原封不动地转发给后端服务器。

二、反向代理单台 Web 服务器实验

(一)实验环境准备

  • 安装 Nginx:在 Linux 系统(以 CentOS 为例)上执行以下命令安装 Nginx:
    • yum install nginx -y
    • 启动 Nginx 服务:systemctl start nginx
    • 检查 Nginx 状态:systemctl status nginx
  • 安装并配置后端 Web 服务器:这里使用 Python 的简单 HTTP 服务器作为示例(确保系统已经安装 Python)。
    • 在任意目录下创建一个简单的 HTML 文件,例如 index.html,内容如下:
<html>
<head><title>Backend Web Server</title></head>
<body><h1>Hello from Backend Server!</h1></body>
</html>
  • 在该目录下启动 Python HTTP 服务器:python -m http.server 8080(这里使用 8080 端口作为后端服务器的端口)

(二)Nginx 配置

  • 编辑 Nginx 配置文件(通常在 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 目录下的自定义配置文件中),添加以下配置:
server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
  • 上述配置表示 Nginx 在 80 端口监听客户端请求,当收到请求时,将请求转发到本地的 8080 端口(即后端 Python HTTP 服务器),并正确设置 Host 和 X-Real-IP 请求头信息。

(三)实验测试

  • 在浏览器中访问 http://localhost(假设 Nginx 服务器的 IP 地址为本地环回地址,如果是远程服务器,则使用相应的域名或 IP 地址),此时浏览器会显示后端服务器返回的页面内容:“Hello from Backend Server!”,这表明客户端的请求先到达 Nginx 反向代理服务器,然后被转发到后端的 Python HTTP 服务器,最后后端服务器的响应又通过 Nginx 返回给客户端,成功实现了反向代理的功能。

通过这个实验,可以直观地理解 Nginx 反向代理的基本原理和配置方法,在实际应用中,可以根据需要进一步扩展和优化配置,例如添加更多的后端服务器实现负载均衡、配置缓存等功能。


http://www.kler.cn/a/456934.html

相关文章:

  • Day60 图论part10
  • vue 嵌套el-dialo,当内层的弹窗弹出时,整个页面被遮罩
  • 从零开始开发纯血鸿蒙应用之逻辑封装
  • 【openGauss】正则表达式次数符号“{}“在ORACLE和openGauss中的差异
  • Mac、Linux命令
  • ds刷题day3|76. 最小覆盖子串、3. 无重复字符的最长子串、11. 盛最多水的容器、LCR 007. 三数之和
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验五----土地整治(超超超详细!!!)
  • elasticsearch 杂记
  • Android `android.graphics` 包深度解析:架构与设计模式
  • Unity:武器部件指示 / 高级自定义UI组件开发 / Unity Job加速
  • Linux -Vim
  • SpringMVC学习(二)——RESTful API、拦截器、异常处理、数据类型转换
  • Java-37 深入浅出 Spring - IoC容器体系 循环依赖 原型Bean 原型作用域 Lazy ObjectFactory
  • mongodb(6.0.15)安装注意事项,重装系统后数据恢复
  • 【Redis】Redis 典型应用 - 缓存 (cache)
  • Android 13 Launcher3 移除桌面抽屉入口
  • MLLM学习过程
  • 【Beats02】企业级日志分析系统ELK之Filebeat 收集日志及案例一
  • 机器视觉中的单线程、多线程与跨线程:原理与应用解析
  • 前端HTMLCSS
  • Eclipse 添加书签
  • 【SpringMVC】Bean 加载控制
  • 关于easy-es对时间范围查询遇到的小bug
  • 基于springboot校园志愿者管理系统源码和论文
  • Prompt提示工程上手指南(七)Prompt编写实战-基于智能客服问答系统下的Prompt编写
  • spring cloud微服务-OpenFeign的使用