记录一些自己所学。
通过虚拟机安装centos系统,搭建nginx服务器,实现正向代理和反向代理。
Vmware,Centos7,XShell,SCP,Nginx
具体安装步骤可参考其他博主的博客~
安装了四台机器,00为代理服务器,01-03作为反向代理的应用机器
在安装完一台机器后,可以通过快照快速克隆出其他几台新的机器,而不用重新安装。
虚拟机开机,用`ip addr`命令查出虚拟机ip地址,用于远程登陆
![在这里插入图片描述](https://img-blog.csdnimg.cn/52a8c5bdeb554f91ba7809be87bc8ef9.png)
ip地址为192.168.88.133
ssh 192.168.88.133
yum -y install gcc-c++
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
tar -xvf nginx-1.20.2.tar.gz
cd nginx-1.20.2
./configure
make
make install
whereis nginx
cd ../
rm -f nginx-1.20.2.tar.gz
rm -rf nginx-1.20.2
ln -s /usr/local/nginx nginx
systemctl status firewalld //查看防火墙状态
systemctl start firewalld //启动防火墙
systemctl stop firewalld //停止防火墙
systemctl restart firewalld //重启防火墙
systemctl enable firewalld //开机自启动
systemctl disable firewalld //禁止开机自启动
端口管理命令(在防火墙开启的状态下使用)
firewall-cmd --list-ports //查看已开放的端口列表
firewall-cmd --permanent --add-port=80/tcp //开放80端口
firewall-cmd --permanent --remove-port=80/tcp //关闭80端口
firewall-cmd --reload //重新加载防火墙规则,开闭端口后要执行
至此,Nginx服务安装完毕!
./nginx/sbin/nginx
用户不直接访问对应服务器,而是通过访问Nginx服务器,间接访问应用服务器。
以百度服务器为例 www.baidu.com
ps -ef | grep nginx
命令查询Nginx服务的进程号kill -9 [进程号]
./nginx/sbin/nginx
此时虽然输入的是Nginx服务器的ip,但会跳转至百度的地址,此时实现了正向代理,给用户的体验就是访问了百度服务器。
1台代理服务器 代理 N台应用服务器
在代理服务器眼里,不明确知道代理的是谁
负载均衡算法以加权轮询算法
为例
Nginx_00 192.168.88.133 作为反向代理服务器(做负载均衡)
Nginx_01 192.168.88.130 作1号应用服务器
Nginx_02 192.168.88.131 作2号应用服务器
Nginx_03 192.168.88.132 作3号应用服务器
upstream cluster{
server 192.168.88.130:80 weight=3;
server 192.168.88.131:80 weight=2;
server 192.168.88.132:80 weight=1;
}
location / {
proxy_pass http://cluster;
}
在01、02、03号机器中分别上传hello.txt文件
文本内容分别为
01中hello.txt内容:first
02中hello.txt内容:second
03中hello.txt内容:third
保存并重启四台机器的服务
浏览器输入192.168.88.133/hello.txt
注意此时我们并没有向代理服务器中上传hello.txt
文件,那么访问会出现什么结果呢?
第一次:
刷新后第二次:
第三次:
第四次:
第五次:
第六次:
由此可见,代理服务器会分别对3台服务器进行访问,访问顺序为:
01
02
01
03
01
...
造成这样的结果是因为我们对01号机器设置了权值为3,02号机器设置了权值为2,03号机器设置了权值为1。所以每6次访问会出现这样的顺序。相当于是代理服务器向三台性能不同的机器分派各自可以承受的任务量。
./nginx/sbin/nginx