一、代理服务器
1、什么是代理服务器
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
2、什么是正向代理?什么是反向代理?
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
3、反向代理有哪些主要应用?
现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
Nginx反向代理
使用4台RHEL7虚拟机,其中一台作为Nginx代理服务器,该服务器需要配置两块网卡,IP地址别为192.168.4.5和192.168.2.5,两台Web服务器IP地址分别为192.168.2.100和192.168.2.200。客户端测试主机IP地址为192.168.4.100。
步骤一:部署实施后端Web服务器
1)部署后端Web1服务器
后端Web服务器可以简单使用yum方式安装httpd实现Web服务,为了可以看出后端服务器的不同,可以将两台后端服务器的首页文档内容设置为不同的内容。
# yum -y install httpd
# echo "192.168.2.100" > /var/www/html/index.html
# systemctl restart httpd
# firewall- cmd - - set- default- zone=trusted
# setenforce 0
2)部署后端Web2服务器
# yum -y install httpd
# echo "192.168.2.200" > /var/www/html/index.html
# systemctl restart httpd
# firewall- cmd - - set- default- zone=trusted
# setenforce 0
步骤二:配置Nginx服务器,添加服务器池,实现反向代理功能
1)修改/usr/local/nginx/conf/nginx.conf配置文件
# vim /usr/local/nginx/conf/nginx.conf
... ...
http {
... ...
#使用upstream定义后端服务器集群,集群名称任意(如webserver)
#使用server定义集群中的具体服务器和端口
upstream webserver {
server 192.168.2.100:80;
server 192.168.2.200:80;
}
... ...
server {
listen 80;
server_name localhost;
location / {
#通过proxy _pass将用户的请求转发给webserver集群
proxy_pass http://webserver;
}
}
2)重启nginx服务
# /usr/local/nginx/sbin/nginx - s reload
3)客户端使用浏览器访问代理服务器测试轮询效果
# curl http://192.168.4.5 //使用该命令多次访问查看效果
192.168.2.100
# curl http://192.168.4.5
192.168.2.200
步骤三:配置upstream服务器集群池属性
1)设置失败次数,超时时间,权重
weight 可以设置后台服务器的权重,
max_fails 可以设置后台服务器的失败次数,
fail_timeout 可以设置后台服务器的失败超时时间。
# vim /usr/local/nginx/conf/nginx.conf
... ...
http {
... ...
upstream webserver {
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=30;
server 192.168.2.200 weight=2 max_fails=2 fa