网络运维Day13

文章目录

  • 部署web服务器
    • 部署虚拟机web1
      • 安装依赖包
      • 解压NGINX压缩包
      • 初始化
      • 编译
      • 编译安装
      • 查看验证
      • 配置动静分离
    • 部署虚拟机web2
      • 安装依赖包
      • 解压NGINX压缩包
      • 初始化
      • 编译
      • 编译安装
      • 查看验证
      • 配置动静分离
  • 配置NGINX七层代理
    • 测试健康检查功能
  • 配置NGINX四层代理
    • 部署代理服务器
  • 总结

部署web服务器

实验准备(网卡名不一定必须为eth0)

  • 可将虚拟机A改名为proxy
  • 可将虚拟机B主机名修改为web1
  • 使用web1克隆web2
主机名IP地址角色
proxyeth0:192.168.8.100 eth1:192.168.4.5代理服务器
web1eth0:192.168.8.101web服务器
web2eth0:192.168.8.102web服务器

web1主机配置IP地址(分配的IP地址以自己的为准)

[root@pc207 ~]# hostnamectl set-hostname web1
[root@web1 ~]# nmcli connection modify ens33 ipv4.method auto \
connection.autoconnect yes
[root@web1 ~]# nmcli connection up  ens33
[root@web1~]# yum clean all
[root@web1 ~]# yum repolist						#查看yum是否可用

web2主机配置IP地址(分配的IP地址以自己的为准)

[root@pc207 ~]# hostnamectl set-hostname web2
[root@web2 ~]# nmcli connection modify ens33 ipv4.method auto \
connection.autoconnect yes
[root@web2 ~]# nmcli connection up  ens33
[root@web2 ~]# yum clean all
[root@web2 ~]# yum repolist						#查看yum是否可用

proxy主机需要配置两个网段8.0和4.0,所以需要两块网卡,eth0和eth1

添加网卡

在这里插入图片描述

在这里插入图片描述

修改新增加网卡eth1的IP地址为:192.168.4.5

[root@som ~]# hostnamectl set-hostname proxy
[root@proxy ~]# nmcli  connection  add  con-name  eth1  ifname  eth1  type ethernet  																	   #添加一张网卡eth1
[root@proxy ~]# nmcli connection delete 有线连接\ 1
[root@proxy ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.4.5/24 connection.autoconnect yes
[root@proxy ~]# nmcli connection up eth1

此时可以正常从Windows连接虚拟机proxy,web1和web2

将proxy主机上的/root/som.tar.gz拷贝至web1、web2(web1、web2IP地址以自己为准)

[root@proxy ~]# scp /root/som.tar.gz root@192.168.8.101:/root
[root@proxy ~]# scp /root/som.tar.gz root@192.168.8.102:/root

部署虚拟机web1

虚拟机web1源码编译安装NGINX,配置动静分离

安装依赖包

[root@web1 ~]# yum  -y install gcc make pcre-devel openssl-devel

解压NGINX压缩包

  • 采用nginx-1.16.1.tar.gz
[root@web1 ~]# mkdir /root/som
[root@web1 ~]# tar -xf /root/som.tar.gz -C /root/som
[root@web1 ~]# cd som
[root@web1 som]# tar -xf nginx-1.16.1.tar.gz
[root@web1 som]# cd nginx-1.16.1

初始化

[root@web1 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module

编译

[root@web1 nginx-1.16.1]# make

编译安装

[root@web1 nginx-1.16.1]# make install

查看验证

[root@web1 ~]# ls /usr/local/nginx/
conf sbin html logs

配置动静分离

安装软件

[root@web1 ~]# yum -y install mariadb mariadb-server mariadb-devel 
[root@web1 ~]# yum -y install php   php-mysql php-fpm

启动Nginx服务

[root@web1 ~]# /usr/local/nginx/sbin/nginx

启动MySQL服务,设置开机自启

[root@web1 ~]# systemctl restart  mariadb           
[root@web1 ~]# systemctl enable mariadb       

启动PHP-FPM服务,设置开机自启

[root@web1 ~]# systemctl restart php-fpm 
[root@web1 ~]# systemctl enable php-fpm 
[root@web1 ~]# ss -utnlp | grep :80
[root@web1 ~]# ss -utnlp | grep :3306
[root@web1 ~]# ss -utnlp | grep :9000

修改Nginx配置文件并启动服务

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf 
server {

 location  ~  \.php$  {
        root           html;
        fastcgi_pass   127.0.0.1:9000;    	#将请求转发给本机9000端口,PHP解释器
        fastcgi_index  index.php;
        #fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi.conf;       	#加载其他配置文件
      }
[root@web1 ~]# /usr/local/nginx/sbin/nginx -s reload

创建PHP页面,测试LNMP架构能否解析PHP页面

创建PHP测试页面:

[root@web1 ~]# vim /usr/local/nginx/html/test.php
<?php
$i=33;
echo $i;
?>

访问测试(自己访问自己的IP,不要照抄)

[root@web1 ~]# curl 192.168.8.101/test.php

部署虚拟机web2

虚拟机web2源码编译安装NGINX,配置动静分离

安装依赖包

[root@web2 ~]# yum  -y install gcc make pcre-devel openssl-devel

解压NGINX压缩包

  • 采用nginx-1.16.1.tar.gz
[root@web2 ~]# mkdir /root/som
[root@web2 ~]# tar -xf /root/som.tar.gz -C /root/som
[root@web2 ~]# cd som
[root@web2 som]# tar -xf nginx-1.16.1.tar.gz
[root@web2 som]# cd nginx-1.16.1

初始化

[root@web2 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module

编译

[root@web2 nginx-1.16.1]# make

编译安装

[root@web2 nginx-1.16.1]# make install

查看验证

[root@web2 ~]# ls /usr/local/nginx/
conf sbin html logs

配置动静分离

安装软件

[root@web2 ~]# yum -y install mariadb mariadb-server mariadb-devel 
[root@web2 ~]# yum -y install php   php-mysql php-fpm

启动Nginx服务

[root@web2 ~]# /usr/local/nginx/sbin/nginx

启动MySQL服务,设置开机自启

[root@web2 ~]# systemctl restart  mariadb           
[root@web2 ~]# systemctl enable mariadb       

启动PHP-FPM服务,设置开机自启

[root@web2 ~]# systemctl restart php-fpm 
[root@web2 ~]# systemctl enable php-fpm 
[root@web2 ~]# ss -utnlp | grep :80
[root@web2 ~]# ss -utnlp | grep :3306
[root@web2 ~]# ss -utnlp | grep :9000

修改Nginx配置文件并启动服务

[root@web2 ~]# vim /usr/local/nginx/conf/nginx.conf 
server {

 location  ~  \.php$  {
        root           html;
        fastcgi_pass   127.0.0.1:9000;    	#将请求转发给本机9000端口,PHP解释器
        fastcgi_index  index.php;
        #fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi.conf;       	#加载其他配置文件
      }
[root@web2 ~]# /usr/local/nginx/sbin/nginx -s reload

创建PHP页面,测试LNMP架构能否解析PHP页面

创建PHP测试页面:

[root@web2 ~]# vim /usr/local/nginx/html/test.php
<?php
$i=88;
echo $i;
?>

访问测试(自己访问自己的IP,不要照抄)

[root@web2 ~]# curl 192.168.8.101/test.php

配置NGINX七层代理

  • 部署代理服务器,安装nginx服务,在这里由于proxy主机是之前的虚拟机A,nginx是已经安装好的,这里不再安装,如果是新的机器则需要重新安装

在这里插入图片描述

配置Nginx服务器,添加服务器池,实现反向代理功能, 使用upstream定义后端服务器集群,集群名称任意(如servers),使用server定义集群中的具体服务器和端口

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

upstream servers {                   #upstream模块要写到http的里面
    server 192.168.8.101:80;		 #自己web1的主机IP地址
    server 192.168.8.102:80;		 #自己web2主机的IP地址
}
   server {
      listen       80;
      server_name  localhost;
      location / {
          proxy_pass http://servers;     #通过proxy_pass将用户的请求转发给servers集群
       root   html;
       index  index.php index.html index.htm;
      }

#由于proxy主机是web克隆出来的,所以需要把nginx配置文件里面的解析动态页面的配置注释掉
	#location ~ \.php$ {
	#    root           html;
	#    fastcgi_pass   127.0.0.1:9000;
	#    fastcgi_index  index.php;
	#    include        fastcgi.conf;
	#}
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload	#重新加载

浏览器测试,反复访问代理服务器测试效果

http://192.168.4.5/test.php

测试健康检查功能

模拟web故障,将web1 的nginx关闭

[root@web1 ~]# /usr/local/nginx/sbin/nginx -s stop

测试,访问的是web2的内容

http://192.168.4.5/test.php

将web1 的nginx启动

[root@web1 ~]# /usr/local/nginx/sbin/nginx

测试,web1和web2的内容出现

http://192.168.4.5/test.php

配置upstream服务器集群池属性

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
……
upstream webserver {
	server 192.168.8.101:80 weight=2;
	server 192.168.8.102:80 max_fails=2 fail_timeout=30;
    }
#weight设置服务器权重值,默认值为1
#max_fails设置最大失败次数,测试服务器几次才确认服务器失败
#fail_timeout设置失败超时时间,单位为秒
#down标记服务器已关机,不参与集群调度
……

客户端反复访问代理服务器测试效果,web1 和web2都可以访问

http://192.168.4.5/test.php

模拟web2宕机

[root@web2 ~]# /usr/local/nginx/sbin/nginx -s stop

浏览器测试,只有web1提供页面

开机web2,20秒之后才能访问web2

[root@web2 ~]# /usr/local/nginx/sbin/nginx

配置NGINX四层代理

在这里插入图片描述

部署代理服务器

  • 部署支持4层TCP/UDP代理的Nginx服务器

  • 部署nginx服务器

编译安装必须要使用–with-stream参数开启4层代理模块。

[root@proxy ~]# /usr/local/nginx/sbin/nginx -s stop #停止Nginx服务
[root@proxy ~]# rm -rf /usr/local/nginx/            #清理环境
[root@proxy ~]# cd som/nginx-1.16.1/
[root@proxy nginx-1.16.1]# ./configure --with-http_ssl_module  --with-stream        
													#开启SSL加密功能,开启4层反向代理功能
[root@proxy nginx-1.16.1]# make 					#编译
[root@proxy nginx-1.16.1]# make install             #编译并安装
  • 配置Nginx服务器,添加服务器池,实现TCP/UDP反向代理功能

  • 在这里我们的配置不再是使用http协议,所以不能在配置到http里面

[root@proxy nginx-1.16.1]# vim /usr/local/nginx/conf/nginx.conf       
stream {
      upstream backend {
            server 192.168.8.101:22;        	#后端SSH服务器的IP和端口
            server 192.168.8.102:22;
      }
      server {
              listen 12345;                     #Nginx监听的端口
              proxy_pass backend;
      }
}
http {

.. ..

启动nginx

[root@proxy nginx-1.16.1]# /usr/local/nginx/sbin/nginx

客户端使用访问代理服务器测试轮询效果

[root@proxy nginx-1.16.1]# ssh 192.168.4.5 -p 12345
root@192.168.4.5's password: 
[root@web1 ~]# exit
[root@proxy nginx-1.16.1]# ssh 192.168.4.5 -p 12345
root@192.168.4.5's password: 
[root@web2 ~]#

总结

  • 掌握NGINX七层代理
  • 掌握NGINX四层代理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/142211.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2022年09月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 已知字符串:s=“语文,数学,英语”,执行print(s.split(“,”))语句后结果是?( ) A: [‘语文’, ‘数学’, ‘英语’] B: [语文, 数学, 英语] C: [‘语文, 数学, 英语’] D: [‘语…

使用opencv实现图像的畸形矫正:仿射变换

1 仿射变换 1.1 什么是仿射变换 在图像处理中&#xff0c;经常需要对图像进行各种操作如平移、缩放、旋转、翻转等&#xff0c;这些都是图像的仿射变换。图像仿射变换又称为图像仿射映射&#xff0c;是指在几何中&#xff0c;一个向量空间进行一次线性变换并接上一个平移&…

Git分支与Git标签详解

目录 前言 一、Git分支&#xff08;Branch&#xff09; 1.分支的概念 2.分支的常用操作 3.Git 分支管理 二、Git标签&#xff08;Tag&#xff09; 1.标签的概念 2.标签的类型 3.标签的常用操作 4.Git标签管理 前言 在软件开发过程中&#xff0c;版本管理是非常重要的一…

asp.net图书管理系统

asp.net图书管理系统 基本操作图书管理 读者管理 借书 修改资料 修改密码 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于C#winform架构和sql server数据库 功能模块&#xff1a; 图书管理 读者管理 借书 修改资料 修改…

C/C++交换输出 2021年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C交换输出 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C交换输出 2021年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 输入两个整数a,b&#xff0c;将它们交换输出 2、输入输…

【系统安装】ubuntu20.04启动盘制作,正经教程,小白安装教程,百分百成功安装

1.所需材料&#xff1a; 64GBU盘&#xff08;其实8g和16g也可以&#xff09; 2.制作U盘启动盘 使用windows制作ubuntu 20.04启动盘 1&#xff09;下载制作工具&#xff1a;Rufus&#xff1a;Rufus - 轻松创建 USB 启动盘 2&#xff09;插入用来做启动盘的U盘 3&#xff0…

【Vue】过滤器Filters

hello&#xff0c;我是小索奇&#xff0c;精心制作的Vue系列持续发放&#xff0c;涵盖大量的经验和示例&#xff0c;如对您有用&#xff0c;可以点赞收藏哈 过滤器 filters过滤器已从Vue 3.0中删除&#xff0c;不再支持了&#xff0c;这里可以作为了解进行学习 vue3要精简代码&…

指标类型(一):北极星指标、虚荣指标

每个产品都有很多指标&#xff0c;每个指标都反映了对应业务的经营情况。但是在实际业务经营中&#xff0c;却要求我们在不同的产品阶段寻找到合适的指标&#xff0c;让这个指标可以代表当前产品阶段的方向和目标&#xff0c;让这个指标不仅对业务经营团队&#xff0c;而且对产…

GCN代码讲解

这里写的有点抽象&#xff0c;所以具体的可以参照下面代码块中的注释&#xff1a; def load_data(path"../data/cora/", dataset"cora"):"""Load citation network dataset (cora only for now)"""print(Loading {} datase…

Git忽略文件.gitignore的使用

1.为什么使用? 当你使用git add .的时候有没有遇到把你不想提交的文件也添加到了缓存中去&#xff1f;比如项目的本地配置信息&#xff0c;如果你上传到Git中去其他人pull下来的时候就会和他本地的配置有冲突&#xff0c;所以这样的个性化配置文件我们一般不把它推送到git服务…

C++编写的多线程自动爬虫程序

以下是一个使用C编写的爬虫程序&#xff0c;用于爬取Python进行多线程跑数据的内容。本示例使用了Python的requests库来发送HTTP请求&#xff0c;并使用cheeseboy的爬虫ipIP库来设置爬虫ip信息。以下是详细代码和步骤&#xff1a; #include <iostream> #include <stri…

MySQL 人脸向量,欧几里得距离相似查询

前言 如标题&#xff0c;就是通过提取的人脸特征向量&#xff0c;写一个欧几里得 SQL 语句&#xff0c;查询数据库里相似度排前 TOP_K 个的数据记录。做法虽然另类&#xff0c;业务层市面上有现成的面部检索 API&#xff0c;技术层现在有向量数据库。 用 MySQL 关系型存储 128 …

人工智能基础_机器学习026_L1正则化_套索回归权重衰减梯度下降公式_原理解读---人工智能工作笔记0066

然后我们继续来看套索回归,也就是线性回归,加上了一个L1正则化对吧,然后我们看这里 L1正则化的公式是第二个,然后第一个是原来的线性回归,然后 最后一行紫色的,是J= J0+L1 对吧,其实就是上面两个公式加起来 然后我们再去看绿色的 第一行,其实就是原来线性回归的梯度下降公式…

uniapp 小程序 身份证 和人脸视频拍摄

使用前提&#xff1a; 已经在微信公众平台的用户隐私协议&#xff0c;已经选择配置“摄像头&#xff0c;录像”等权限 开发背景&#xff1a;客户需要使用带有拍摄边框的摄像头 &#xff0c;微信小程序的方法无法支持&#xff0c;使用camera修改 身份证正反面&#xff1a; <…

ROS 通信机制

ROS是一个分布式框架&#xff0c;为用户提供多节点&#xff08;进程&#xff09;之间的通信服务&#xff0c;所有软件和功能都建立在这种分布式通信机制上&#xff0c;ROS的通信机制是最底层也是最核心的技术。 一、话题通信机制 话题在 ROS 中使用最为频繁&#xff0c;其通信…

计算机毕业设计选题推荐-公共浴池微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

本地跑项目解决跨域问题

跨域问题&#xff1a; 指的是浏览器不能执行其他网站的脚本&#xff0c;它是由浏览器的同源策略造成的&#xff0c;是浏览器对 javascript 施加的安全限制。 同源策略&#xff1a; 是指协议&#xff08;protocol&#xff09;、域名&#xff08;host&#xff09;、端口号&…

使用validator实现枚举类型校验

使用validator实现枚举类型校验 前言&#xff1a; 在前端调用后端接口传递参数的过程中&#xff0c;我们往往需要对前端传递过来的参数进行校验&#xff0c;比如说我们此时需要对用户的状态进行更新&#xff0c;而用户的状态只有正常和已删除&#xff0c;并且是在代码中通过枚…

云流量回溯的重要性和应用

云流量回溯是指利用云计算和相关技术来分析网络流量、数据传输或应用程序操作的过程。这个过程包括了对数据包、通信模式和应用程序性能的审查和跟踪。本文将介绍云流量回溯重要性和应用! 1、网络安全: 云流量回溯是网络安全的重要组成部分。通过监测和回溯网络流量&#xff0c…
最新文章