通过虚拟机安装centos系统,搭建nginx服务器,实现正向代理和反向代理

记录一些自己所学。
通过虚拟机安装centos系统,搭建nginx服务器,实现正向代理和反向代理。

一、所需工具与环境:

Vmware,Centos7,XShell,SCP,Nginx

二、安装虚拟机和操作系统

具体安装步骤可参考其他博主的博客~

安装了四台机器,00为代理服务器,01-03作为反向代理的应用机器

在这里插入图片描述
安装小tips:

在安装完一台机器后,可以通过快照快速克隆出其他几台新的机器,而不用重新安装。

在这里插入图片描述

注意在这里选择 创建完整克隆
在这里插入图片描述

三、搭建Nginx服务器

1、用XShell和SCP连接服务器:

	虚拟机开机,用`ip addr`命令查出虚拟机ip地址,用于远程登陆
	![在这里插入图片描述](https://img-blog.csdnimg.cn/52a8c5bdeb554f91ba7809be87bc8ef9.png)

ip地址为192.168.88.133

  • XShell远程登录
ssh 192.168.88.133

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连接成功!

  • SCP远程登录

在这里插入图片描述
在这里插入图片描述
登录成功!

2、安装Nginx服务

  • 将本地Nginx压缩包通过SCP上传至服务器
    在这里插入图片描述
  • 安装C语言环境
    Nginx这个软件是用C语言写的,需要C语言的环境来编译这个软件
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
  • 编译nginx源代码
  1. 进入源代码目录
cd nginx-1.20.2
  1. 编译安装前的配置
./configure
  1. 编译
make
  1. 安装
make install
  1. 查看安装到什么地方去了
whereis nginx
  1. 返回上级目录并删除nginx压缩文件和源代码包
cd ../
rm -f nginx-1.20.2.tar.gz
rm -rf nginx-1.20.2
  1. 创建软链接,方便操作
ln -s /usr/local/nginx nginx
  • 由于Nginx默认端口为80,所以远程访问时,需要开启防火墙的80端口
    一些防火墙命令:
	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服务安装完毕!

3、访问Nginx服务

  • 启动Nginx服务
./nginx/sbin/nginx
  • 在浏览器输入虚拟机服务器ip地址即可
    在这里插入图片描述

四、正向代理

在这里插入图片描述
用户不直接访问对应服务器,而是通过访问Nginx服务器,间接访问应用服务器。
以百度服务器为例 www.baidu.com

1、修改Nginx服务器配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存修改

2、重启服务

  • 通过ps -ef | grep nginx命令查询Nginx服务的进程号

ps -ef 相当于Linux系统中的任务管理器
在这里插入图片描述

  • 杀死进程
kill -9 [进程号]

在这里插入图片描述

  • 重新启动
./nginx/sbin/nginx

3、再次访问Nginx服务器

此时虽然输入的是Nginx服务器的ip,但会跳转至百度的地址,此时实现了正向代理,给用户的体验就是访问了百度服务器。
在这里插入图片描述

五、反向代理与负载均衡算法

在这里插入图片描述
1台代理服务器 代理 N台应用服务器
在代理服务器眼里,不明确知道代理的是谁

负载均衡算法以加权轮询算法为例

1、登录四台应用服务器,获取各自的IP地址

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号应用服务器

2、修改反向代理服务器配置文件并设置权值

在这里插入图片描述

在这里插入图片描述

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;
        }

3、实验准备

在01、02、03号机器中分别上传hello.txt文件
在这里插入图片描述
文本内容分别为

01中hello.txt内容:first
02中hello.txt内容:second
03中hello.txt内容:third

保存并重启四台机器的服务

4、访问代理服务器

浏览器输入192.168.88.133/hello.txt
注意此时我们并没有向代理服务器中上传hello.txt文件,那么访问会出现什么结果呢?
第一次:
在这里插入图片描述

刷新后第二次:
在这里插入图片描述
第三次:
在这里插入图片描述
第四次:
在这里插入图片描述
第五次:
在这里插入图片描述
第六次:
在这里插入图片描述
由此可见,代理服务器会分别对3台服务器进行访问,访问顺序为:

01
02
01
03
01
...

造成这样的结果是因为我们对01号机器设置了权值为3,02号机器设置了权值为2,03号机器设置了权值为1。所以每6次访问会出现这样的顺序。相当于是代理服务器向三台性能不同的机器分派各自可以承受的任务量。

六、总结

  • 过程bug:
    浏览器一直在转:
    用户无法访问
    代理服务器是安装了Nginx的虚拟机就是代理服务器,检查:
    1、服务器有没有开机
    2、Nginx有没有启动 ./nginx/sbin/nginx
    3、服务器的防火墙有没有开放80端口
  • 反向代理优势
    反向代理服务器通过负载均衡算法,不会让集群中任何一台机器过于空闲或过于繁忙。在反向代理模式中,容错率更高,可实现高并发,高性能。当有一台服务器宕机,此时集群模式仍然可以正常使用,Nginx代理服务器会自动将宕机的机器提出集群,不会派发请求给他,而是继续派发给其他的健康机器,健康机器可以继续提供服务,此时也给运维人员时间来维修这台机器,当机器恢复正常,又会继续回到集群继续工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值