35人参与 • 2025-02-19 • 软件测试
关闭防火墙和selinux,准备三台同一网段的虚拟机
localhost | roucky_linux9.4 | 192.168.226.20 |
localhost | roucky_linux9.4 | 192.168.226.21 |
localhost | roucky_linux9.4 | 192.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提供的服务。
http://192.168.226.20/
。同理,三层nginx的代理也是往上叠加。
到此这篇关于nginx proxy 代理测试的实现的文章就介绍到这了,更多相关nginx proxy 代理测试内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论