• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Nginx Proxy 代理测试的实现

    发布者: 竹韵9933 | 发布时间: 2025-8-16 14:35| 查看数: 49| 评论数: 0|帖子模式

    一. 实验准备

    关闭防火墙和selinux,准备三台同一网段的虚拟机
    localhostRoucky_linux9.4192.168.226.20
    localhostRoucky_linux9.4192.168.226.21
    localhostRoucky_linux9.4192.168.226.22
    三台服务器都配置官方的nginx源并下载和启动
    1. sudo tee /etc/yum.repos.d/nginx.repo << 'EOF'
    2. [nginx-stable]
    3. name=nginx stable repo
    4. baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
    5. gpgcheck=1
    6. enabled=1
    7. gpgkey=https://nginx.org/keys/nginx_signing.key

    8. [nginx-mainline]
    9. name=nginx mainline repo
    10. baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/
    11. gpgcheck=1
    12. enabled=0
    13. gpgkey=https://nginx.org/keys/nginx_signing.key
    14. EOF
    复制代码
    1. yum install -y nginx
    2. systemctl enable --now nginx
    复制代码
    此时三台服务器都可以正常开启


    二. 配置反向代理

    正向代理和反向代理对比示意图
    两者的区别在于代理的对象不一样:
    正向代理中代理的对象是客户端,proxy和client同属一个LAN,对server透明;
    反向代理中代理的对象是服务端,proxy和server同属一个LAN,对client透明。

    现让192.168.226.20做客户端 ,192.168.226.21做代理服务器
    对192.168.226.20做如下配置:
    编辑配置文件/etc/nginx/conf.d/default.conf
    1. vim /etc/nginx/conf.d/default.conf

    2. #修改配置文件为如下:
    3. server {
    4.     listen       80;
    5.     server_name  localhost;

    6.     location / {
    7.         proxy_pass http://192.168.226.21;  # 设置代理目标的地址
    8.         proxy_redirect default;  # 开启默认的代理重定向
    9.         proxy_set_header Host $http_host;  # 设置代理请求中的 Host 头部
    10.         proxy_set_header X-Real-IP $remote_addr;  # 设置真实客户端 IP 地址的头部
    11.         proxy_set_header REMOTE-HOST $remote_addr;  # 设置远程主机的头部,此处与 X-Real-IP 重复了
    12.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 设置经过的代理 IP 地址的头部

    13.         proxy_connect_timeout 30;  # 设置与后端服务器建立连接的超时时间为30秒
    14.         proxy_send_timeout 60;  # 设置向后端服务器发送请求的超时时间为60秒
    15.         proxy_read_timeout 60;  # 设置从后端服务器读取响应的超时时间为60秒

    16.         proxy_buffering on;  # 开启代理缓冲
    17.         proxy_buffer_size 32k;  # 设置单个缓冲区的大小为32KB
    18.         proxy_buffers 4 128k;  # 设置用于存储响应数据的缓冲区的数量和大小
    19.         proxy_busy_buffers_size 256k;  # 设置活跃缓冲区的最大大小为256KB
    20.         proxy_max_temp_file_size 256k;  # 设置临时文件的最大大小为256KB
    21.     }

    22.     error_page   500 502 503 504  /50x.html;  # 定义处理5xx错误的页面
    23.     location = /50x.html {
    24.         root   /usr/share/nginx/html;  # 指定50x错误页面的根目录
    25.     }
    26. }
    复制代码
    测试Nginx配置文件
    1. nginx -t
    复制代码
    重新加载Nginx配置
    1. nginx -s reload
    复制代码
    现在在代理服务器192.168.226.21上查看Nginx访问日志
    1. tail -f /var/log/nginx/access.log
    复制代码

    整体解释
    日志条目显示了来自IP地址
    1. 192.168.226.20
    复制代码
    的客户端在2024年6月18日19:11:57(+0800时区)发起的多个HTTP请求。这些请求都是对服务器根路径
    1. /
    复制代码
    使用HTTP/1.0方法发起的
    1. GET
    复制代码
    请求。服务器返回的HTTP状态码是
    1. 304
    复制代码
    ,表示资源未修改,客户端可以使用缓存的版本,因此响应大小为
    1. 0
    复制代码
    字节。客户端的用户代理字符串表明它使用的是Chrome浏览器。
    1. X-Forwarded-For
    复制代码
    字段显示客户端的真实IP地址为
    1. 192.168.226.1
    复制代码

    简单讲记录了来自192.168.226.20的客户端的IP的记录,但是真实请求的IP是192.168.226.1

    三. 配置二层代理

    在之前的实验里,我用windows客户端访问192.168.226.20,对192.168.226.20作量一层代理,一层代理服务器为192.168.226.21,现在我要讲192.168.226.21的下一层代理设置为192.168.226.22,即实现二层代理。
    对192.168.226.22编辑配置文件
    1. vim /etc/nginx/conf.d/default.conf

    2. #修改配置文件为如下:
    3. server {
    4.     listen       80;
    5.     server_name  localhost;

    6.     location / {
    7.         proxy_pass http://192.168.226.22;
    8.         proxy_redirect default;
    9.         proxy_set_header Host $http_host;
    10.         proxy_set_header X-Real-IP $remote_addr;
    11.         proxy_set_header REMOTE-HOST $remote_addr;
    12.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    13.         proxy_connect_timeout 30;
    14.         proxy_send_timeout 60;
    15.         proxy_read_timeout 60;

    16.         proxy_buffering on;
    17.         proxy_buffer_size 32k;
    18.         proxy_buffers 4 128k;
    19.         proxy_busy_buffers_size 256k;
    20.         proxy_max_temp_file_size 256k;
    21.     }
    22.     error_page   500 502 503 504  /50x.html;
    23.         location = /50x.html {
    24.         root   /usr/share/nginx/html;
    25.     }
    26. }
    复制代码
    测试Nginx配置文件
    1. nginx -t
    复制代码
    重新加载Nginx配置
    1. nginx -s reload
    复制代码
    现在在代理服务器192.168.226.22上查看Nginx访问日志
    1. tail -f /var/log/nginx/access.log
    复制代码

    查看192.168.226.21的日志:

    查看192.168.226.20的日志:

    修改默认发布页面用来辨别
    1. #对192.168.226.20修改
    2. echo "webserver1" > /usr/share/nginx/html/index.html
    3. systemctl restart nginx


    4. #对192.168.226.21修改
    5. echo "webserver2" > /usr/share/nginx/html/index.html
    6. systemctl restart nginx


    7. #对192.168.226.22修改
    8. echo "webserver3" > /usr/share/nginx/html/index.html
    9. systemctl restart nginx
    复制代码
    浏览器刷新页面访问

    实际上访问192.168.226.20是192.168.226.22提供的服务。

    解释流程


    • Windows客户端 发送请求到
      1. http://192.168.226.20/
      复制代码

    • Nginx 1 (在192.168.226.21) 接收到请求,根据配置将其转发到目标服务器 192.168.226.22。
    • Nginx 2 (在192.168.226.22) 接收从Nginx 1转发的请求,并根据其配置将请求转发到最终的应用服务器,即也是192.168.226.22。
    同理,三层nginx的代理也是往上叠加。
    到此这篇关于Nginx Proxy 代理测试的实现的文章就介绍到这了,更多相关Nginx Proxy 代理测试内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表