IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx 学习(三).Nginx 实践 -> 正文阅读

[系统运维]Nginx 学习(三).Nginx 实践

Nginx 学习(三).Nginx 实践

本章节 主机Windows

虚拟机192.168.141.131

1. 多虚拟站点

1.1 前期准备工作

Windows主机:hosts 文件修改,模拟域名解析;

## 学习nginx 
192.168.141.131 www.nginx.com
192.168.141.131 aaa.nginx.com
192.168.141.131 bbb.nginx.com
192.168.141.131 ccc.nginx.com
192.168.141.131 ddd.nginx.com
192.168.141.131 eee.nginx.com

Linux 虚拟机 : 创建目录 /website

[root@localhost website]# pwd
/website  ## 创建目录
[root@localhost website]# ls
aaa  bbb  ccc  ## 对应文件夹
[root@localhost website]# cd aaa
[root@localhost aaa]# ls
index.html ###每个文件夹都创建 index.html 文件
[root@localhost aaa]# cat index.html   
<h1>AAA website<h1>   ###内容 不一样 AAA /BBB /CCC

2. 多端口测试

一个server 表示一个虚拟主机

配置文件

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /website/aaa;
            index  index.html index.htm;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	
	server {
        listen       81;
        server_name  localhost;

        location / {
            root   /website/bbb;
            index  index.html index.htm;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	
	server {
        listen       82;
        server_name  localhost;

        location / {
            root   /website/ccc;
            index  index.html index.htm;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 多域名测试

配置文件

 server {
        listen       80;
        server_name  aaa.nginx.com;

        location / {
            root   /website/aaa;
            index  index.html index.htm;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	
	server {
        listen       80;
        server_name  bbb.nginx.com;

        location / {
            root   /website/bbb;
            index  index.html index.htm;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	server {
        listen       80;
        server_name  ccc.nginx.com;

        location / {
            root   /website/ccc;
            index  index.html index.htm;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }	
	 

效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. 虚拟主机 server

一个server 表示一个虚拟主机:解析配置文件

  • 多个server ,安装顺序匹配,匹配到第一个 后续就不匹配了
  • listen + server_name 虚拟主机唯一性
  • server_name: bbb.nginx.com ddd.nginx.com eee.nginx.com; 可以配置多个域名
  • server_name: 域名可以是通配符 *.nginx.*;
  • server_name: 域名可以是正则表达式

	server {
        listen       80;
        
        server_name  ccc.nginx.com;

        location / {
            ## ## rewrite  <regex> <replacement>  <flag>
            root   /website/ccc;
            index  index.html index.htm;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

4.1 location

两种方式 二选一

/ 表示匹配所有

方式一

location / {	
            root   /website/ccc;
            index  index.html index.htm;
 }

方式二

location / {	
	## 注意 https 需要额外的配置
    proxy_pass  http://www.baidu.com
 }
  • proxy_pass 后面可以直接是地址 proxy_pass http://www.baidu.com
  • 也可以是一个自定义的 服务 示例
	upstream myserver {
		server localhost:81;
		server localhost:82;
		server localhost:83;
	}
	
    server {
        listen       80;
        server_name  www.nginx.com;

        location / {
            proxy_pass http://myserver;
        }
    }

5. 功能(一):反向代理, 网关

nginx 服务转发的功能其实就是反向代理;

反向代理:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源;

区别于反向代理,什么是正向代理:正向代理伪造client,反向代理伪造server,正向代理隐藏客户端,反向代理隐藏服务端;

在这里插入图片描述

网关: 所有数据经过nginx服务器

6. 功能(二):负载均衡

后端业务服务器是一个集群,nginx g根据负载均衡算法来控制服务区访问哪一个

在这里插入图片描述

6.1 复制均衡算法

## server 配置
    server {
        listen       80;
        server_name  www.nginx.com;

        location / {
            proxy_pass http://myserver;
        }
    }

1.轮训 默认

	upstream myserver {
		server localhost:81 ;
		server localhost:82 ;
		server localhost:83 ;
	}

6.2 权重

	upstream myserver {
		server localhost:81  weight=10;
		server localhost:82  weight=5;
		server localhost:83  weight=1;
		server localhost:84  weight=20 down; ### 表示不参与负载均衡
		server localhost:85  weight=20 backup; ### 备用 当都不可用时启用  
	}

3.ip_hash

根据ip 地址Hash分配节点

upstream myserver {
     ## ip_hash;    least_conn   fari
	server localhost:81 ;
	server localhost:82 ;
	server localhost:83 ;
}

4.least_conn

最少连接访问

5.fari

根据服务响应时间

7. 功能(三):动静分离

一个项目不仅仅有动态资源,还有静态资源;静态资源可以放在nginx下面;

location ~*/(js|img|css) {	
            root   html; #### js|img|css 静态数据放到该文件夹下面
            index  index.html index.htm;
 }

8. 功能(四):URL ReWrite

  • 隐藏真正的URL
  • 模拟静态页面,搜索引擎友好
location = /{
   ## rewrite  <regex> <replacement>  <flag>
   proxy_pass http://myserver;
}

flag :

  • last 本条匹配完成后,不继续 location URI 匹配
  • break 不在任何的匹配
  • redirect 302 临时重定向 (爬虫看,可以继续爬数据)
  • permanent 301 永久重定向

8. 功能(五):防盗链

本站点的数据 禁止浏览器以外的访问:校验http header 里面的 Referer

location = /{
   valid_refers  none|block www.nginx.com;
   if($valid_refer){ //对 Referer错误  请求直接 403
   		return 403;
   }
   proxy_pass http://myserver;
}
  • none : 没有refer 可以访问

  • block:浏览器地址栏带https和 http

9. 功能(六):配置错误页面

### 这里配置的是50* 的异常  也可以转发其他的异常
error_page   500 502 503 504  /50x.html;
location = /50x.html {
     root   html;
}

10.高可用配置

keepalived + Nginx 配置HA 高可用

现在的生产环境中一般是多个节点来共同工作,当一个节点失效,需要可以快速节点的切换;

10.1 简介

nginx 自身是做不到高可用的,需要借助一个外部软件 keepalived 来保证;

keepalived 软件的基本原理就是多个机器中的 keepalived + 虚拟的IP地址(对外提供服务的IP) 保持心跳检测,当心跳检测不到就开始投票,存活的节点获取修改自己IP为虚拟IP;

缺点:可能是由于两台服务器之前是不连通的,两台服务器都可以向外部提供服务;

解决方案就是:添加脚本,脚本对我们后台服务检测(如MySQL ,Tomcat ),如果服务不可用,就立刻杀死 keepalived 进程;存活的keepalived 的节点可以迅速的切换;

10.2 架构图

在这里插入图片描述

10.3 安装准备

修改hosts

## 指向虚拟地址
192.168.141.150 www.nginx.com  

两台虚拟机:

  • 192.168.141.131 主节点

  • 192.168.141.132 备用节点

yum 安装 keepalived

## 其中有一台机器安装了mysql  yum install -y keepalived 执行报错   
yum install -y keepalived 

## 如果报错 添加 --skip-broken
yum install -y keepalived  --skip-broken

两台机器nginx 配置

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on; 
    keepalive_timeout  65;

	upstream myserver {
		server 192.168.141.131:81;
		server 192.168.141.132:81;   
	}
	
    server {
        listen       80;
        server_name  www.nginx.com;

        location / {
            proxy_pass http://myserver;
        }
    }
	
	server {
        listen       81;
        server_name  localhost;

        location / {
            root   /website/aaa;  
            index  index.html index.htm;  ### 131内容 131 : AAA website   132 内容 132: AAA website
        }
    }	
}

主节点keepalived 配置

! Configuration File for keepalived

global_defs {
   router_id ng131
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.141.150
    }
}

备用节点keepalived 配置

! Configuration File for keepalived

global_defs {
   router_id ng132
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.141.150
    }
}

在这里插入图片描述

测试成功;master 节点关闭后,BACKUP 节点切换IP 为 150 继续提供服务;

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:30:52  更:2022-05-08 08:32:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/4 17:37:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码