极简版 Nginx 反向代理实验步骤

以下是最核心的反向代理实现步骤,专注于 “客户端→Nginx 代理→后端服务” 的基础转发功能:

一、准备 2 台服务器

角色IP 示例需安装软件
代理服务器192.168.1.10Nginx
后端服务器192.168.1.11Nginx/Apache

二、后端服务器配置(192.168.1.11)

  1. 安装并启动 Web 服务

    # 安装Nginx
    yum install -y nginx   # CentOS/RHEL
    # 或 apt install -y nginx  # Ubuntu/Debian# 启动服务
    systemctl start nginx
    systemctl enable nginx
    
  2. 设置标识页面(便于验证)

    echo "<h1>Backend Server: 192.168.1.11</h1>" > /usr/share/nginx/html/index.html
    

三、代理服务器配置(192.168.1.10)

  1. 安装 Nginx

    yum install -y nginx   # 同上
    
  2. 创建反向代理配置

    # 备份默认配置
    mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak# 新建代理配置
    cat > /etc/nginx/conf.d/proxy.conf << 'EOF'
    server {listen 80;server_name localhost;location / {# 转发到后端服务器proxy_pass http://192.168.1.11:80;# 传递客户端信息proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
    }
    EOF
    
  3. 启动 Nginx

    # 检查配置
    nginx -t# 启动服务
    systemctl start nginx
    systemctl enable nginx
    

四、验证反向代理

  1. 客户端直接访问后端
    浏览器打开 http://192.168.1.11,显示 Backend Server: 192.168.1.11

  2. 通过代理服务器访问
    浏览器打开 http://192.168.1.10同样显示后端页面内容,说明代理成功。

五、核心验证点

  • 客户端仅需知道代理服务器 IP(192.168.1.10),无需知道后端 IP
  • 后端服务器日志中可看到客户端真实 IP(而非代理服务器 IP)

以上步骤完成即实现了最基础的反向代理功能,所有操作均围绕 “请求转发” 核心目标,去除了额外扩展配置。

location / {

    proxy_pass http://192.168.42.1;

}

     proxy_set_header Host $host; # 修改请求头,添加Host字段

proxy_set_header X-Real-IP $remote_addr; # 修改请求头,添加X-Real-IP字段

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 修改请求头,添加X-Forwarded-For字段 client_max_body_size 10m; # 允许客户端请求的最大单文件字节数 client_body_buffer_size 128k; # 缓冲区代理缓冲用户端请求的最大字节数, proxy_connect_timeout 90; # nginx跟后端服务器连接超时时间\(代理连接超时\) proxy_send_timeout 90; # 后端服务器数据回传时间\(代理发送超时\)

proxy_read_timeout 90; # 连接成功后,后端服务器响应时间\(代理接收超时\)

proxy_buffer_size 4k; # 设置代理服务器(nginx)保存用户头信息的缓冲区大小

proxy_buffers 4 32k; # proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 proxy_busy_buffers_size 64k; # 高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 64k; # 设定缓存文件夹大小,大于这个值,将从upstream服务器传

负载均衡

模式(算法)

   轮询(默认)(RR)Round Robin:将请求平均分配给所有服务器,

   最小连接数(Least Connections):该策略将请求分发给当前处理连接数最少的服务器,适合连接数波动较大的场景,如长连接服务。

  IP 哈希(IP Hash):通过请求的客户端IP进行哈希运算,将来自同一IP地址的请求分发到同一台服务器上,适合有会话保持需求的场景。

  权重(Weight):为不同的服务器分配权重,Nginx 将根据设置的权重值来分发请求,权重越高的服务器将承担更多的流量,适合服务器性能不均衡的场景

   

   

upstream web1{

     #默认轮询

       server 192.168.x.x

       server 192.168.x.x

        ...

}

upstream wed2 {

# 最小连接数负载均衡算法 least_conn;

# 后端服务器列表

         server 192.168.1.100:80;

         server 192.168.1.101:80;

        ...

}

upstream wed3 {

ip_hash #ip哈希模式

# 后端服务器列表

         server 192.168.1.100:80;

         server 192.168.1.101:80;

        ...

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/100437.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/100437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windsurf 插件正式登陆 JetBrains IDE:让 AI 直接在你的 IDE 里“打工”

那天你说,我们可以永远在一起——成了我听到的最高兴的,而后知后觉的谎言。 而今天,AI 说:“我可以帮你写完这段代码。” —— 这才是真正的“永远在一起”。 最近,AI 编程工具赛道迎来一场“潜行式革命”:Windsurf Wave 7 正式发布 JetBrains IDE 插件版本,彻底打破“A…

188. Java 异常 - Java 异常处理规范

文章目录188. Java 异常 - Java 异常处理规范&#x1f4dc; 什么是“Catch or Specify Requirement”&#xff1f;✅ 两种满足方式方法一&#xff1a;使用 try-catch 捕获异常方法二&#xff1a;使用 throws 声明异常❌ 不遵守规则会怎样&#xff1f;&#x1f4a1; 哪些异常必须…

泛型通配符 T、E、K、V、?

在Java后端开发中&#xff0c;你一定在写集合类或工具类时&#xff0c;见过 T、E、K、V、? 这样的泛型通配符。但你是否有过以下疑惑&#xff1a; T、E、K、V 到底有什么区别&#xff1f;为什么大家都用这些字母&#xff1f;List<?> 和 List 有什么不同&#xff1f;什么…

基于脚手架微服务的视频点播系统-数据管理与网络通信部分的预备工作

基于脚手架微服务的视频点播系统-数据管理与网络通信部分的预备工作一.数据管理二.网络通信2.1客户端通信模块及测试用例的实现2.2MockServer搭建的相关接口介绍2.3MockServer的搭建示例一.数据管理 在前⾯的实现中&#xff0c;程序中的数据、以及界⾯操作等全部搅合在⼀起&am…

html表单登录模式代码

使用的是Content-Typeapplication/x-www-form-urlencoded形式如代码如下的html&#xff0c;后端没写下去&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>管理员登录</title><…

NLP:Transformer之self-attention(特别分享3)

本文目录&#xff1a;一、核心思想&#xff1a;一句话概括二、计算流程的直观比喻三、分步计算详解&#xff08;附数字例子&#xff09;第 1 步&#xff1a;创建 Query, Key, Value 向量第 2 步&#xff1a;计算注意力分数第 3 步&#xff1a;缩放并应用 Softmax第 4 步&#x…

25、优化算法与正则化技术:深度学习的调优艺术

学习目标:深入理解各种优化算法的原理和适用场景,掌握学习率调度的方法和策略,学会使用Dropout、批归一化等正则化技术,理解早停和验证策略,建立深度学习调优的系统性知识。 深度学习的成功不仅依赖于精巧的模型架构,更在于巧妙的训练策略。如果说网络架构是房屋的设计图…

Netty-01-NIO前置知识

目录 NIO三大组件 一. ByteBuffer 基本用法 DirectByteBuffer与HeapByteBuffer对比 字符串转ByteBuffer ByteBuffer.wrap(byte[] ) 粘包与拆包 文件编程 零拷贝transferTo 二. 阻塞与非阻塞Channel 三. Selector SelectionKey&#xff08;重点&#xff09; Select…

知识点17:多Agent系统架构设计模式

知识点17&#xff1a;多Agent系统架构设计模式 核心概念 掌握系统架构思维&#xff0c;理解多Agent系统的设计原则和模式 架构设计核心概念 在构建多Agent系统时&#xff0c;良好的架构设计是系统成功的关键。本节将介绍多Agent系统架构设计中的核心概念&#xff0c;包括单点瓶…

数据库造神计划第五天---增删改查(CRUD)(1)

&#x1f525;个人主页&#xff1a;寻星探路 &#x1f3ac;作者简介&#xff1a;Java研发方向学习者 &#x1f4d6;个人专栏&#xff1a;《从青铜到王者&#xff0c;就差这讲数据结构&#xff01;&#xff01;&#xff01;》、 《JAVA&#xff08;SE&#xff09;----如此简单&a…

基于Vue3的人工智能生成内容标识服务平台前端页面设计

效果图&#xff1a;素材库&#xff1a;App.vue<template><div id"app"><!-- 头部导航 --><Header /><!-- 主要内容区域 --><main class"main-content"><div class"container"><!-- 强制性国家标准…

使用 MyCat 实现 MySQL 主从读写分离

文章目录使用 MyCat 实现 MySQL 主从读写分离完整指南一、MySQL 读写分离基础概述1.1 读写分离工作原理1.2 为什么需要读写分离1.3 读写分离的两种实现方式主流读写分离中间件对比二、MyCat 中间件简介2.1 MyCat 核心功能2.2 MyCat 适用场景三、环境准备与 MyCat 安装3.1 前提&…

物联网传感器检测实验

/*------------------------------------------------------------------------------ * @文件名 : handle * @描述 : 用户处理函数 * @作者 : 物联网项目组 * @日期 : 2023/04/01 * @版本 : V0.0.2 *****************************…

什么是dirsearch、xray、durpsuite、sqlmap?

你提到的 dirsearch、xray、durpsuite&#xff08;可能为笔误&#xff0c;推测是 ​​Burp Suite​​&#xff09;和 sqlmap 均为网络安全领域中常用的工具&#xff0c;主要用于 Web 应用的安全测试、漏洞检测或渗透测试。以下分别详细说明&#xff1a;​​1. dirsearch​​​​…

lamp脚本部署

#!/bin/bash #关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 #配置yum网络源 echo “正在配置yum仓库” rm -rf /etc/yum.repos.d/* wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &am…

Redis Hash数据类型深度解析:从命令、原理到实战场景

前言 在Redis的众多数据结构中&#xff0c;Hash&#xff08;哈希&#xff09;类型占据着至关重要的地位。Redis本身就是一个高性能的键值&#xff08;Key-Value&#xff09;数据库&#xff0c;其底层的键值对便是通过哈希方式组织的。而Hash数据类型则更进一步&#xff0c;它允…

【C++实战⑬】解锁C++文件操作:从基础到实战的进阶之路

目录一、文件操作的基本概念1.1 文件的分类与打开方式1.2 文件流的概念与相关类&#xff08;ifstream、ofstream、fstream&#xff09;1.3 文件操作的基本流程二、文本文件的读写实战2.1 文本文件的打开与关闭2.2 文本文件的写入操作&#xff08;<< 运算符、write 函数&a…

从C++开始的编程生活(9)——模板初阶

前言 本系列文章承接C语言的学习&#xff0c;需要有C语言的基础才能学会哦~ 第8篇主要讲的是有关于C的模板初阶。 C才起步&#xff0c;都很简单&#xff01;&#xff01; 目录 前言 模板初阶 基本语法 函数模板的实例化 显式实例化的作用 类模板 基本语法 模板初阶 模板…

计算机网络——传输层(25王道最新版)

传输层传输层提供的服务进程 端口号 传输层协议之间的关系socket套接字有链接 VS 无连接 | 可靠 VS 不可靠UDP数据报及检验数据报格式检验方法TCPTCP协议的三大阶段TCP报文段格式&#xff08;很重要&#xff09;建立连接&#xff08;三次握手&#xff09;&#xff08;超级超级重…

羽毛球地板:从专业运动场景到全民健身市场的技术跃迁与产业重构

在全球体育产业向“专业化大众化”双轨并行的趋势下&#xff0c;羽毛球地板作为运动场景的核心基础设施&#xff0c;正经历从单一功能型产品向“性能优化场景适配智能管理”一体化解决方案的转型。据QYResearch统计&#xff0c;2031年全球羽毛球地板市场规模将达15.95亿元&…