nginx优化部分【收尾】

nginx优化部分(收尾部分)
网站安全角度
7)限制HTTP的请求方法(get post)

location ~* /img/ {
if  ($request_method !~ ^(GET|HEAD|POST) $) {  表示取反,只要不是使用这些方法请求的,返回501的状态码
return 501;
}
}

实验:
配置文件

[root@web01 conf.d]# cat index.conf 
server {
listen 80;
server_name  test.oldboy.com;
root  /html/expire/;
index  index.html;
location ~* /oldboy\.* {
   if ($request_method !~ ^(HEAD|POST)$ ) {
        return 501;
    }
}
location  ~ .*\.(gif|jpg|jpeg|png|bmp|swg)$ {
 expires 1d; 
}
}
[root@web01 conf.d]# 

现象:图片无法查看。匹配到了oldboy.png的图片,限制请求的get方式,显示501,但是页面的TXT是可以的,所以没有办法显示图片
在这里插入图片描述
实验二
配置文件

[root@web01 conf.d]# cat index.conf 
server {
listen 80;
server_name  test.oldboy.com;
root  /html/expire/;
index  index.html;
location /  {
   if ($request_method !~ ^(HEAD|POST)$ ) {
        return 501;
    }
}
location  ~ .*\.(gif|jpg|jpeg|png|bmp|swg)$ {
 expires 1d; 
}
}

现象:直接匹配到/ 返回501页面
在这里插入图片描述
8)CDN(分发网络)
nginx性能角度

简单的讲,通过现有的因特网中增加一层新的网络架构,将网站的内容发布到最接近用户的cache服务器内,通过智能DNS负载技术,判断用户的来源,让用户就近使用与服务器相同线路的带宽访问cache服务器,取的所需的内容。
CDN产生的背景:2010年时还不是很关注CDN技术,2015年CDN技术火起来。

CDN的原理图:
在这里插入图片描述
BGP: 可以跨很远的距离进行通讯,连接两个城市的网络通讯
AS:一个区域内的网络(不是局域网,是一个城市的网络)
十年前,互联网架构领域还不是特别关注CDN产品:早期实跨区域主要应用网络路由进行跨区域通讯;早期使用BGP机房路由造成问题:
1)价格成本太高
2)网络带宽容易造成拥塞
原理知识:
在这里插入图片描述
① 用户信息 访问者
② 本地DNS服务器 首先接收用户解析请求
③ SSR 实现DNS智能解析中心节点 用于管理分布式节点
④ chinacache节点 分布式节点 (分布式缓存) 等价于连锁店(分店)
⑤ 网络服务商 不同区域网络环境 A 深圳 B 上海 C 北京
⑥ ICP web服务器 不同网络区域中真正企业网站架构服务器 ICP1 web 盛大游戏 ICP2 web 京东网站
⑦ ICP DNS 授权DNS服务器 记录网站域名与IP地址对应关系 A记录信息

DNS是DNS,CDN是CDN。
DNS是域名解析服务
CDN是分发网络请求解析服务
这两个是不一样的。

扩展:dig命令的使用
dig(域信息搜索器)命令是个用于询问 DNS 域名服务器的灵活的工具。他执行 DNS 搜索,显示从受请求的域名服务器返回的答复。多数 DNS 管理员利用 dig 作为 DNS 问题的故障诊断,因为他灵活性好、易用、输出清楚。虽然通常情况下 dig 使用命令行参数,但他也能够按批处理模式从文档读取搜索请求。不同于早期版本,dig 的 BIND9 实现允许从命令行发出多个查询。除非被告知请求特定域名服务器,dig 将尝试 /etc/resolv.conf 中列举的任何服务器。当未指定任何命令行参数或选项时,dig 将对“.”(根)执行 NS 查询。

在这里插入图片描述
用户CDN访问解析:
① 用户访问网站 第一步本地解析
②本地解析从城域网络内出来,寻找授权DNS服务器
③授权DNS服务器中将解析的记录发送给本地解析服务器
④本地解析服务器不认识解析的记录,发送收到的解析记录给智能解析的SSR服务器
⑤SSR服务器将解析好的记录返回给本地DNS服务器(本地DNS服务器告知用户解析)
⑥用户再次访问时就会直接访问解析好的Chinacache节点服务器,如果节点服务器中没有用户要访问的数据,那么授权DNS服务器就会将数据发送给Chinacache节点服务器

特殊请求:如果用户访问本地DNS服务器,本地DNS缓存中没有,那么不可以让用户直接访问网站总部,如果直接访问网站总部,那么就越过了授权DNS服务器,这叫回源现象

让用户请求本地DNS服务器,如果没有缓存,让它去访问授权DNS服务器,按照流程来,将访问的新的数据得到响应时,可以缓存在本地DNS服务。

总结DNS原理
原理知识:

1. 用户发出域名解析请求到达本地DNS服务器
   2. 本地DNS服务器会访问相应网站授权DNS服务器获取  别名记录信息
   3. 本地DNS服务获得别名记录信息会向智能解析DNS服务器发出请求(ssr)
   4. 智能DNS服务器会根据不同区域别名请求,返回临近区域缓存服务器节点地址信息
   5. 客户端收到返回地址信息,会向指定地址发起访问
   6. 不同区域缓存节点服务器接收用户请求,会将缓存数据响应给用户
   7. 缓存服务器中如果数据信息不完整,定期更新同步源站数据信息,保证数据信息同步
   PS:尽量避免让用户直接访问公司网站(避免回源过程:因为用户直接访问的话,就会导致服务器压力太大了。根据不同区域让用户访问部署在不同区域的服务器)

9)监牢模式
nginx安全角度
作用说明:利用普通用户管理nginx服务,以及控制nginx服务启动或者停止
实现方式:
第一个历程:创建管理nginx进程用户并创建程序相关目录

useradd  nica
su - nica
cd /home/nica
mkdir   logs  www  conf
cp /etc/nginx/mime.types  ~/conf
echo  nica > /html/index.html

实验配置:
配置文件内容
[nica@web01 conf]$ cat index.conf

server {
listen 8080;
server_name  www.oldboy.com;
root  /home/nica/www;
index  index.html;

}

[nica@web01 conf]$ cat nginx.conf

user  nica nica;
worker_processes  1;

error_log  /home/nica/logs/error.log warn;
pid        /home/nica/logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /home/nica/conf/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /home/nica/logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /home/nica/conf/index.conf;
}
[nica@web01 conf]$ 

文件目录结构:

[nica@web01 ~]$ tree /home/nica/
/home/nica/
├── conf
│?? ├── index.conf
│?? ├── mime.types
│?? └── nginx.conf
├── logs
│?? ├── access.log
│?? ├── error.log
│?? └── nginx.pid
└── www
    └── index.html

3 directories, 7 files
[nica@web01 ~]$ 

注意:属主属组都是nica

查看进程信息
在这里插入图片描述

进程master、work都是nica用户在管理(注意在启动时,要在su - nica用户启动并且先-s start启动使pid号产生再reload。启动、检查语法等操作时指定-c /home/nica/conf/nginx.conf配置文件)

查看端口信息
在这里插入图片描述
日志文件内有写入的日志文件,我一开始是没有日志信息输入的。

在这里插入图片描述
笔记:

4)普通用户启动Nginx
	   作用说明:利用普通用户管理nginx服务,以及控制nginx服务启动或停止
	   实现方式:
	   第一个里程: 创建管理nginx进程用户并创建程序相关目录
	   useradd inca
	   cd  /home/inca
	   mkdir conf www logs -p
	   cp /etc/nginx/mime.types ~/conf/
	   cp /etc/nginx/nginx.conf ~/conf/
	   echo www_test >www/index.html
	   chown -R oldboy.oldboy /home/oldboy/
	   
	   第二个里程:编写配置文件信息
	   vim /home/inca/conf/nginx.conf 
	   user oldboy oldboy;
       worker_processes  1;
       error_log  /home/oldboy/logs/error.log warn;
       pid        /home/oldboy/logs/nginx.pid;
       events { 
           worker_connections  1024;
       }
       http {
           include       mime.types;
           default_type  application/octet-stream;
           log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                             '$status $body_bytes_sent "$http_referer" '
                             '"$http_user_agent" "$http_x_forwarded_for"';
           sendfile        on;
           keepalive_timeout 60;
           client_header_timeout 10;
           client_body_timeout 10;
           send_timeout 20;     
           server {
                   listen    8080;
                   server_name  www.oldboy.com;
                   root   /home/oldboy/www;
                   index  index.html;
                   access_log /home/oldboy/logs/www_access.log main;
           }
       }
 
       文件语法检查:
	   nginx -t -c /home/oldboy/conf/nginx.conf
	  
	   第三个里程:启动服务程序
	   nginx -s stop -c /home/oldboy/conf/nginx.conf &>/dev/null

字体显示很大不知道怎么回事儿

很尴尬,是因为放大了三倍,ctrl +滚轴

优化简历项目:3 - 4个项目

公司名称 (xxx公司)  日期 2020 年4月   网站服务优化项目
项目背景
     公司网站在运行期间,经常遭受外网用户入侵攻击,经常出现网站负载压力过大情况,因此严重影响用户访问网站体验。根据公司领导要求,需要对网站架构进行整改优化。

项目说明:
  整体架构优化主要从三个方面入手:
·网站架构安全方面优化
·网站架构性能方面优化
·网站操作管理方面优化

项目实施:
网站架构安全优化:
·修改软件版本名称信息  修改服务进程用户进程信息  修改用户访问策略信息  防盗链处理  防爬虫配置

网站性能方面优化:

shell脚本编写

  第01章 如何才能学好shell编程
第02章 shell脚本初步入门
第03章 shell变量的核心基础知识与实践
第04章 shell变量知识进阶与实践
第05章 变量的数值计算实践
第06章 shell脚本的条件测试与比较
第07章 if条件语句的知识与实践
第08章 shell函数知识与实践
第09章 case条件语句的应用实践
第10章 while循环和until循环的应用实践
第11章 for循环语句的应用实践
第12章 循环控制及状态返回值得应用实践
第13章 shell数组的应用实践  awk数组概念
第14章 shell脚本开发规范
第15章 shell脚本的调试
第16章 shell脚本开发环境的配置和优化实践
第17章 Linux信号及trap命令的企业应用实践
第18章 Expect自动化交互程序应用实践   
第19章 企业shell面试题及企业运维实战案例   
第20章 子shell及shell嵌套模式知识应用

02 shell脚本课程学习规划(每天授课时间控制在6个小时左右)

第一天 01 ~ 03 章节
第二天 04 ~ 05 章节
第三天 06 ~ 07 章节
第四天 08 ~ 09 章节
第五天 10 ~ 11 章节
第六天 12 ~ 13 章节 周一
第七天 14 ~ 15章节
第八天 16 ~ 17章节
第九天 18 ~ 20 章节 (19章节练习题目 需要自行完成)

03 shell脚本编写入门讲解
1) shell脚本编写的作用说明
很有价值,但是逻辑思维比较明确才成。
· 安装操作系统部分
shell + kickstart/cobbler 批量安装部署系统
·系统网络配置步骤
shell快速设置调整网络信息 地址 掩码 网关 DNS 路由 vip地址
·操作系统基础优化

系统时间同步优化
系统字符编码优化
远程服务连接优化
下载yum源优化
系统安全优化  selinux关闭  防火墙优化(配置防火墙)
安装系统基础软件优化
优化系统文件描述符
系统内核配置优化
设置主机名称信息

·操作系统服务部署
学习过的服务

crond   rsync  nfs  inotify sersync nginx  php  mariadb/mysql   keepalived  tomcat   ansible  openvpn    jumpserver   zabbix

还没学的服务

redis  MHA    Atlas  mongodb     elk  git   docker   jinkens

·快速编写修改文件
shell + sed:提示信息
·管理服务启动状态
shell+命令快速管理启动/停止/重启服务
·实现监控服务状态信息
shell脚本统计需要数据信息
·企业脚本扩展说明
日志分析统计 日志切割处理 日志信息收集
三剑客命令+shell脚本+crond

2)shell脚本学习需要提前准备工作
掌握linux常用命令 数量掌握 命令积累
练习题01:统计当前目录下有多少个普通文件
解答:

[root@web03 etc]# find  ./   -maxdepth 1 -type f  |wc -l
105
[root@web03 etc]# ll |grep  "^-" |wc -l
103

练习题02:将一段字符串信息 “I am oldboy” 输入到两个文件中 file01.txt file02.txt (已经存在)

tee命令:使用将标准输入的内容输出到标准输出并可以保存为文件
掌握三剑客命令使用方法

· vim编辑器用法说明
  将光标移动到第一行    gg
  将光标移动到最后一行  G
  将光标移动到行首      ^/0
  将光标移动到行尾      $
  将光标向左快速移动    b
  将光标向右快速移动    w 
  将光标右边的内容快速删除  C
      将光标左边的内容快速删除  d^

03 shell脚本学好建议说明
掌握脚本语法使用
01 变量设定 条件表达式 if判断 for循环 while循环 case语句 函数语法规范 数组
02 脚本编写的规范养成
脚本保存目录规范 书写规范 注释说明
03 从简单开始做起 编写脚本
04 进行模仿 多参考资料信息 多思考
05 多看别人写的脚本

总结:先是掌握基础编写语法 — 掌握能看别人编写脚本 ---- 试着编写 —形成自己编写脚本方式以及思路

自己的思路

先写思路 再写 要用到的一些语句   再写命令  再组合为脚本

4)什么是shell
鸡蛋壳 : 蛋黄 (内核) 蛋清(shell 解释器) 蛋壳(外围软件程序)
命令解释器 用户输入命令信息 — 解释器解释给内核 内核进行处理控制硬件
解释器工作两种方式:
采用交互式方式进行解释 执行一个命令操作,系统将操作结果返回给用户进行确认,确认完毕
采用非交互式进行解释: 执行一个命令操作 直接全程有内核进行处理

说明:shell划分为父shell 和子shell两种类型
父shell不能继承子shell的变量
子shell 可以继承父shell的变量

05) shell种类信息:

[root@web01 ~]# cat /etc/shells 
/bin/sh  是bash的软连接
/bin/bash    linux系统默认使用shell解释器
/sbin/nologin    无法登陆访问shell
/usr/bin/csh    不常见
/usr/bin/rsh    不常见

6)脚本编写规范

01 脚本存放目录要统一
02 shell脚本的结尾一.sh结尾
脚本的开头需要有解释器信息
#!/bin/bash
脚本中需要有作者的信息  author lsy  2020-3-31 version 01 
脚本的每一行 或者 每一个段落 最好加上注释说明信息(中文表示)
脚本中成对符号信息最好一次性写完整
"" '' {} [] () ``

7)脚本执行的方法
第一个脚本编写: 输出hello world
三种运行方式:
方法一:利用bash解释器命令运行脚本

bash  test.sh

方法二:利用脚本绝对路径运行脚本
chmod a+x test.sh
/server/scripts/test01.sh

方法三:利用.后者source执行脚本
提示:脚本文件路径信息可以放入profile文件中 表示不会,也不清楚是什么作用
方法三:利用.后者source执行脚本

说明:方法一和方法二都是在子shell中执行
方法三:在父shell中进行运行
三种方式区别:
方法一和二都是在子shell中执行的
方法三是在父shell中执行的

[root@web01 script]# ./test.sh  子shell中执行的
oldboy
hello world
[root@web01 script]# echo $name 父shell无法继承子shell的变量 所以输出变量时啥也没有

[root@web01 script]# source  test.sh   父shell中执行的
oldboy
hello world 
[root@web01 script]# echo $name     在当前父shell中输出变量信息,是可以看到的赋值的变量
oldboy
[root@web01 script]# cat test.sh 
#!/bin/bash
#lsy  output info
name=oldboy
echo $name
echo hello  world

[root@web01 script]# 

8)常见脚本变量分类
普通变量(局部生效 不是所有用户都调用)
定义方式 类似于小学学习方程式
x=1
调用变量 :利用$符号可以调用变量
echo $name
永久生效 :将变量设置编写到文件中

/etc/profile 
/etc/bashrc 
~/.bashrc 
~/.bash_profile 

说明::局部优先于全局 :~/.bashrc 和 ~/.bash_profile 优先于 /etc/profile 和/etc/bashrc
前两个所有用户登录都会加载,后2个只有在该用户登录会加载

说明:
1)家目录中文件优于/etc/目录下面文件生效
2)家目录中配置只针对指定用户生效 在/etc/目录下文件中配置全局生效

环境变量(全局生效/etc/profile,所有用户都可以识别)
·定义方式
export info="I am lsy" 加上export和不加export的区别: 有export定义变量:对当前登录窗口(如果是别的窗口的话,就不成了)的所有shell都生效(父shell和相应的子shell都识别) 没有export定义变量:没有export 只对当前shell生效 (对子shell不生效)

在这里插入图片描述
调取变量
echo $info
env 命令
unset info 取消变量

定义环境变量规范:

1.变量定义建议由字符下划线数字组成  大写字母组成
PS:一定不能使用数字开头定义变量
2.定义变量时,等号等号两边不要有空格
3.建议变量名设置见名知其意
4.变量设置建议1,可以采用驼峰语法定义变量
oldboy_Age=18  ---小驼峰语法
Oldboy_Age=18  ----大驼峰语法

上午课程总结:
(下午可能会讲解shell部分)
① nginx限制HTTP请求的方法(get post)
②CDN原理
③普通用户管理nginx进程信息,避免root用户权利管理时,出现漏洞导致黑入系统。也可以方便管理,指定运维人员管理那个网站站点,分工明确。
④优化简历项目

下午课程总结:
shell的一百道例题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值