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部署yum

1、Nginx官网:www.nginx.org
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击之后就能看到安装nginx的官方文档了,如下图所示:
在这里插入图片描述

  • 根据官方文档,我们完成以下操作:

2、安装yum工具包,可以快速更新yum仓库(可不安装)
在这里插入图片描述
3、在/etc/yum.repo.d目录下创建nginx.repo文件:
在这里插入图片描述
4、将文档中的内容写入:
在这里插入图片描述
在这里插入图片描述
· [nginx-stable]:稳定版
· [nginx-mainline]:主线版

5、默认情况下,使用稳定 nginx 包的存储库。如果您想使用主线 nginx 包,请运行以下命令:

“yum-config-manager --enable nginx-mainline”

执行完此命令之后,我们再来看nginx.repo文件:
在这里插入图片描述
可以看到,主线版已经开启
【注意】:如果在之前没有安装yum-utils,那么“yum-config-manager --enable nginx-mainline”是执行不了的。其实说白了,直接把enable=0改成1就行了!
因为我们要安装nginx1.18版本,所以我们还是使用稳定版,把主线版关掉,因为主线版安装的是1.19的版本。
6、刷新yum仓库:

[root@localhost yum.repos.d]#yum makecache

7、安装nginx:

[ root@localhost ~]# yum -y install nginx

8、关闭防火墙和selinux,并禁止开机自启;
9、开启nginx:

[root@localhost ~]# systemctl start nginx

三、Nginx的配置文件

1、/etc/logrotate.d/nginx : 日志轮转
2、/etc/nginx/nginx.conf : 总配置文件
3、/etc/nginx/conf.d : 子配置文件夹
4、/etc/nginx/conf.d/default.conf:默认的网站配置文件
5、/etc/nginx/fastcgi_params :动态网站模块文件-python,php所需的相关变量
6、/etc/nginx/scgi_params
7、/etc/nginx/uwsgi_params
8、/etc/nginx/koi-utf: 字符集,文件编码
9、/etc/nginxlwin-utf
10、/etc/nginx/koi-win
11、/etc/nginx/mime.types : 文件关联程序、网站文件类型和相关处理程序
12、/etc/nginx/modules: 模块文件夹。第三方模块
13、/etc/sysconfig/nginx
(1)#Configuration file for the nginx service.
(2)NGINX=/usr/sbin/nginx
(3)CONFFILE=/etc/nginx/nginx.conf
(4)Configuration file for the nginx-debug service.
14、/etc/sysconfig/nginx-debug
(1)# Configuration file for the nginx-debug
(2)service.NGINX=/usrlsbin/nginx-debug
(3)CONFFILE=/etc/nginx/nginx.conf
(4)LOCKFILE=/var/lock/subsys/nginx-debug
15、/usr/lib/systemd/system/nginx-debug.service :nginx调试程序启动脚本
16、/usr/liblsystemd/system/nginx.service systenctl : 服务脚本
17、/usrlsbin/nginx : 主程序
18、/usr/sbin/nginx-debug : nginx调试程序
19、/usr/shareldoc/nginx-1.12.1: 文档
20、/var/cache/nginx : 各种缓存
21、/var/log/nginx: 日志文件夹
(1)access.log
(2)error.log
22、/usr/lib64/nginx: Nginx模块目录

四、Nginx编译参数

  • 以下的所有参数配置都可以通过命令“nginx -V”来查看是否具备

1、基本配置:

**configure arguments: 配置参数./configure --help查询帮助
--prefix=/etc/nginx:安装路径
--sbin-path=/usr/sbin/nginx:程序文件
--modules-path=/usr/lib64/nginx/modules:模块路径
--conf-path=/etc/nginx/nginx.conf:主配置文件
--error-log-path=/var/log/nginx/error.log:错误日志
--http-log-path=/var/log/nginxlaccess.log:访间日志
--pid-path=/var/run/nginx.pid:程序ID
--lock-path=/var/run/nginx.lock:锁路径,防止重复启动nginx
--http-dient-body-temp-path=/var/cache/nginx/cient_temp: 缓存
--http-proxy-temp-path=/var/cache/nginx/proxy_temp:代理缓存
--http-fastcgi-temp-path=/var/cache/ nginx/fastcgi_temp:php缓存
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp:python缓存
--http-scgi-temp-path=/var/cache/nginx/scgi_temp
--with-compat
--user=nginx

2、模块类:

**--group=nginx
--with-file-aio
--with-threads 
--with-http_addition_module
--with-http_auth_request_module
--with-http_dav_module 
--with-http_flv_module 
--with-http_gunzip_module 
--with-http gzip_static_module
--with-http_mp4_module
--with-http_random_index_module
--with-http_realip_module
--with-http_secure_link_module
--with-http_slice_module**
**--with-http_ssl_module:安全模块
--with-http_stub_status_module:访问状态--with-http_sub_module:nginx替换网站响应内容--with-http_v2_module
--with-mail
--with-mali_ssl_module
--with-stream 
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--with-cc-opt='-O2-g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --
param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune-generic-fPIC’
--with-ld-opt=-Wl,-z,relro -Wl,-z,now -pie'**

五、Nginx的基本配置

·观察主配置文件:vim /etc/nginx/nginx.conf

1、分类
(1) CoreModule核心模块 (进程数等)
(2) EventsModule事件驱动模块 (工作模式等)
(3) HttpCoreModule http内核模块(文档程序类型,配置文件等)
2、模块功能:
(1)全局/核心块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成workerprocess数等。
(2)events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
(3)http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
(4)server块:配置虚拟主机的相关参数,一个http中可以有多个server。
(5)location块:配置请求的路由,以及各种页面的处理情况。
在这里插入图片描述
· 1: 全局块
· 2: events块
· 3: http块
至于server块和localhost块,在nginx的子配置文件“/etc/nginx/conf.d/default.conf”中,如果是老一点的版本,server块会嵌套在http块中

·观察默认主机配置文件(子配置文件):

vim /etc/nginx/conf.d/default.conf

在这里插入图片描述
目前我们只需要了解server块和localhost块

六、Nginx的日志Log

1、日志部署
(1)日志模块名称:ngx_http_log_module
(2)相关指令:
log_format
access_log
error_log
open_log_flie_cache

(3)日志的格式:

在http模块当中:

vim /etc/nginx/nginx.conf

在这里插入图片描述
图中红框部分:
在这里插入图片描述

·各个字段解释如下:
$remote_addr:远程地址:记录客户端IP地址
$ r e m o t e u s e r : remote_user: remoteu?ser远程用户,记录客户端用户名称
[$time_local]:本地时间:服务器自身时间
$request:请求:记录请求的URL和HTTP协议
$status:状态:记录请求状态
$body_bytes_sent:发送给客户端的字节数,不包括响应头的大小
$http_referer:记录从哪个页面链接访问过来的(超链接)
$http_user_agent:记录客户端浏览器相关信息
$http_x_forwarded_for:代理IP

(4)访问日志和错误日志
·Access_log
·Error_log

设置一个个性化404:
1)首先我们来自己创建一个主机配置文件:xiaotao.conf(注意后缀一定是“.conf”,否则主配置文件读不到)

2)在根下创建xiaotao目录
[root@localhost ~]#mkdir /xioatao
3)随便写个东西进去:
[root@localhost ~]# echo 1 >xiaotao/index.html
4)重启服务:
[ root@localhost ~]# systemctl restart nginx
5)修改主机配置文件: /etc/nginx/conf/xiaotao.conf

在server{}里面定义:
在这里插入图片描述

6)在/xiaotao目录下创建404.html

在这里插入图片描述

再搞张名为404.jpg的图片进去:
在这里插入图片描述

7)重启服务:systemctl restart nginx

8)随便访问一个不存在的页面即可:
在这里插入图片描述
(404.jpg这张图片舅不展示了…)

(5)日志缓存
1)简介:大量访问到来时,对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭.占用了系统的IO,与业务无关。可以使用open_log _file _cache来设
2)语法: open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m;
3)解释:max 1000指的是日志文件的FD,最大的缓存数量为1000。
如果超了怎么办,看下面:
min_users=3 20秒内小于3次访问的FD,就给你清掉,
结合inactive 20s的时间,
valid=1m 检查周期为1分钟。
总结: 缓存最多1000个,到了极限,每分钟开始清除掉20秒内小于3次的文件FD。

但是此功能默认是禁用状态,在生产环境下不建议开启,因为会占用内存资源

2、日志轮转/切割
· nginx安装会默认开启日志轮转,我们来查看一下:
在这里插入图片描述
上图第一个文件就是日志轮转文件;第二个是日志文件

[ root@localhost ~]# vim /etc/logrotate.d/nginx

在这里插入图片描述
· create 0644 nginx nginx
· daily:天
· rotate 10:10份
· missingok:丢失不提示
· notifempty:空文件的话,不转储
· compress:压缩

3、日志分析
(1)统计2020年9月5日一天内访问最多的10个IP (iptop10)

grep '05/Sep/2020' cd.mobiletrain.org.log | awk '{ ips[$1]++}END{for(i in ips){print i,ips[i} }' | sort -k2 -rn | head -n10

(2)统计2020年9月5日访问大于100次的IP

grep '05/Sep/2020 cd.mobiletrain.org.log | awk '{ ips[$1]++ } END{for(i in ips) {if(ips[i]>100) {print i,ips[i]}}}' | sort -k2 -rn | head -n10

(3)统计2020年9月5日访问最多的10个页面( $request top 10)

grep '05/Sep/2020' cd.mobiletrain.org.log | awk '{urls[$7]++} END{for(i in urls){print urls[i],i}}' | sort -k1 -rn | head -n10

(4)统计2020年9月5日每个URL访问内容总大小($body_bytes_sent)

grep '05/Sep/2020' sz.mobiletrain.org.log | awk '{ urls[$7]++; size[$7]+=$10}
END{for(i in urls){print urls[i],size[i],i }}' |sort -k1 -rn | head -n10

(5)统计2020年9月5日每个IP访问状态码为404及出现次数($status)

grep '05/Sep/2020'sz.mobiletrain.org.log | awk '{if($9="404"){ip_code[$1""$9]++}}END{for(i in ip_code){print i,ip_code[i]}}'

七、Nginx web模块

1、连接模块:stub_status_module
·配置状态模块
(1)修改nginx的配置文件,在server{ }中添加:
在这里插入图片描述
(2)重启服务

[root@wwwconf]#systemctl restart nginx

2、随机模块
(1)微更新:
模块:random_index_module
·目的:将主页设置成随机页面,是一种微调更新机制
(2)操作步骤:
1)先在目录/app下创建几个文件:

[root@www app]# touch ired.html, green.html ,.yellow.html}

(注意:.yellow是隐藏文件)
2)修改配置文件,在server{}中location{}中添加
在这里插入图片描述
·这样它就能够读取到/app目录下的文件了,当然这些文件是要写内容的,交给开发的小伙伴吧!
3、替换模块
如果我们用模板生成网站的时候,因为疏漏或者别的原因造成代码不如意,但是此时因为文件数量巨大,不方便全部重新生成,那么这个时候我们就可以用此模块来暂时实现纠错。另一方面,我们也可以利用这个实现服务器端文字过滤的效果。
(1)启动替换:在nginx的配置文件server{}中添加以下字段:
在这里插入图片描述
·sub_filter nginx ‘haha’:将“nginx”替换成“haha”;
·sub_filter_once off;关闭只替换一次;
4、文档读取
(1)模块:ngx_http_core_module
·sendfile
·tcp_nopush
·tcp_nodelay
5、文件压缩
(1)原理介绍:启动该模块,使文件传输前进行压缩,提升传输效率。
(2)模块:ngx_http_gzip_module
操作步骤:
1)在nginx的配置文件的http{}中添加:
在这里插入图片描述
·gzip on : 开启压缩
·gzip _http_version 1.1; 使用1.1版本来压
·gzip_comp_level 9 : 压缩的级别,最高9级,直接拉满
·gzip types : 压缩对象
·gzip _static on : 开启静态压缩
2)重启服务:

stemctl restart nginx

6、页面缓存
(1)模块:ngx_http_headers_module
·“expires”起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求要配置expires,可以在http段中(所有的服务器)或者server段中(本服务器)或者location段中(本页面)加入。Nginx(expires缓存减轻服务端压力),
(2)原理:无缓存,每次访问服务器,均是全文传输。开启缓存可以加速浏览网站。
(3)启用缓存
1)默认是开启浏览器缓存,浏览页面
第一次返回状态码200,页面对象全文传输。
第二次返回状态304,页面对象部分传输。
2)配置:vim /etc/nginx/conf.d/default.conf
在server{}的location{}中添加:
在这里插入图片描述
3)重启服务:

stemctl restart nginx

(4)理解nginx服务器缓存:
·开启服务器缓存模块,再次浏览页面,观察响应头中出现服务器回复的缓存时间理解nginx服务器启动缓存时间,加速浏览。
·缺点是时效性降低。

7、防盗链
(1)模块:ngx_http_referer_module
(2)启用防盗链功能:
1)进入配置文件,在server{}中的location{}中添加:
在这里插入图片描述
·valid_referers none:禁止引用
这里不允许引用/xiaotao目录下的所有文件,如果引用,给他一个403报错
2)重启服务:

stemctl restart nginx

3)设置可以引用的白名单:
server_name :
在这里插入图片描述
让Google、百度、192.168.100整个网段、和自己(a.com)引用,如此一来,盗链就是合规的

八、Nginx访问限制

1、模块:ngx_http_limit_req_module
目的:控制请求频率限制。
2、我们通过压力测试工具来对服务器进行压测:
(1)使用服务器本机来安装压测工具:httpd-tools(如果是Apache的话会自动安装),这其中包含一款网站压测工具:ab

 [root@www~]#yum -y install httpd-tools

(2)进行压力测试:

[root@www~]# ab -n 100 -c 10 http : //www .xiantao.com/

发送100次分10次
在这里插入图片描述
·server software:所使用的服务器
·server hostname:主机名
·server port:端口
·document path:申请的内容
·document:申请的文档大小
·concurrency level:
·time taken for tests:测试的时间
·complete request:完成的请求次数
·failed:失败次数
·write error:
·total transferrd:总共传输的字节大小
·html transferrd:html包大小
·requests per second:服务器1秒钟能够处理的次数
·time per request:平均消耗掉一个请求所需的时间

3、启动限制
(1)进入主配置文件: vim /etc/nginx/nginx.conf
(2)在http{}中添加:
在这里插入图片描述
·limit_req_zone:定义限制规则;
·$binary_remote_addr:远程的二进制地址作为参照物;
·zone=req_zone::限制策略的名称 ;
·:10m:占用10M空间;
·rate=1r/s:允许每秒1次请求;
(3)修改主机配置文件,引用限制的名称(zone=req_zone)

/etc/nginx/conf.d/xiaotao.conf

(4)重启服务:

stemctl restart nginx

(5)再进行压力测试:

[root@www ~]# ab -n 100 -c 10 http: //www.xiantao.com

九、Nginx访问控制

1、基于主机(俗称“封他IP”)
(1)模块:ngx_http_access_module
(2)语法:
allow #允许某些主机
deny #拒绝某些主机

在server{}中添加:只允许192.168.100.18这个主机访问
在这里插入图片描述
重启服务:

stemctl restart nginx

2、基于用户(username&password)
(1)模块:ngx_http_auth_basic_module
(2)启用控制:
1)安装httpd-tools:

[root@www~]#yum -y install httpd-tools

2)建立认证文件,用户名为user10:
在这里插入图片描述
注意:如果有这个文件就不要用“-c”了,直接“-m”就完事了
3)设置密码:
在这里插入图片描述
4)启动认证:在server{}中添加
在这里插入图片描述
·auth_basic:认证的基本信息
·auth_basic_user_file:基础认证的用户文件位置
5)重启服务:

stemctl restart nginx

6)真机访问:
在这里插入图片描述
在这里插入图片描述

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:30:31-

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