it编程 > 软件设计 > 软件测试

Nginx Proxy 代理测试的实现

35人参与 2025-02-19 软件测试

一. 实验准备

关闭防火墙和selinux,准备三台同一网段的虚拟机

localhostroucky_linux9.4192.168.226.20
localhostroucky_linux9.4192.168.226.21
localhostroucky_linux9.4192.168.226.22

三台服务器都配置官方的nginx源并下载和启动

sudo tee /etc/yum.repos.d/nginx.repo << 'eof'
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
eof
yum install -y nginx
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

vim /etc/nginx/conf.d/default.conf

#修改配置文件为如下:
server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass http://192.168.226.21;  # 设置代理目标的地址
        proxy_redirect default;  # 开启默认的代理重定向
        proxy_set_header host $http_host;  # 设置代理请求中的 host 头部
        proxy_set_header x-real-ip $remote_addr;  # 设置真实客户端 ip 地址的头部
        proxy_set_header remote-host $remote_addr;  # 设置远程主机的头部,此处与 x-real-ip 重复了
        proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;  # 设置经过的代理 ip 地址的头部

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

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

    error_page   500 502 503 504  /50x.html;  # 定义处理5xx错误的页面
    location = /50x.html {
        root   /usr/share/nginx/html;  # 指定50x错误页面的根目录
    }
}

测试nginx配置文件

nginx -t

重新加载nginx配置

nginx -s reload

现在在代理服务器192.168.226.21上查看nginx访问日志

tail -f /var/log/nginx/access.log

整体解释

日志条目显示了来自ip地址 192.168.226.20 的客户端在2024年6月18日19:11:57(+0800时区)发起的多个http请求。这些请求都是对服务器根路径 / 使用http/1.0方法发起的 get 请求。服务器返回的http状态码是 304,表示资源未修改,客户端可以使用缓存的版本,因此响应大小为 0 字节。客户端的用户代理字符串表明它使用的是chrome浏览器。x-forwarded-for 字段显示客户端的真实ip地址为 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编辑配置文件

vim /etc/nginx/conf.d/default.conf

#修改配置文件为如下:
server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass http://192.168.226.22;
        proxy_redirect default;
        proxy_set_header host $http_host;
        proxy_set_header x-real-ip $remote_addr;
        proxy_set_header remote-host $remote_addr;
        proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;

        proxy_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;

        proxy_buffering on;
        proxy_buffer_size 32k;
        proxy_buffers 4 128k;
        proxy_busy_buffers_size 256k;
        proxy_max_temp_file_size 256k;
    }
    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

 测试nginx配置文件

nginx -t

重新加载nginx配置

nginx -s reload

现在在代理服务器192.168.226.22上查看nginx访问日志 

tail -f /var/log/nginx/access.log

查看192.168.226.21的日志:

查看192.168.226.20的日志:

修改默认发布页面用来辨别

#对192.168.226.20修改
echo "webserver1" > /usr/share/nginx/html/index.html
systemctl restart nginx


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


#对192.168.226.22修改
echo "webserver3" > /usr/share/nginx/html/index.html
systemctl restart nginx

浏览器刷新页面访问 

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

解释流程

同理,三层nginx的代理也是往上叠加。 

到此这篇关于nginx proxy 代理测试的实现的文章就介绍到这了,更多相关nginx proxy 代理测试内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

nginx长连接配置小结

02-19

KVM与Xen虚拟化技术深度对比分析

02-19

Nginx设置连接超时并进行测试的方法步骤

02-23

DLSS 4性能全力冲锋! 耕升RTX5080炫光OC显卡拆解超频测试

02-09

热搜第一! 微信灰度测试仅提醒朋友与我的互动功能

02-08

不到2kg轻薄机身超值RTX 4060轻薄独显全能本! 玄派玄极星16评测

01-21

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论