Linux之Yum源与Nginx服务篇
1.Yum源知识理论总结概括
Yum源概述
Yum 源
即软件仓库的标识,里面承载着软件包集合
Yum源组成
包含模块
【OS】、【everything】、【EPOL】、【debuginfo】、【source】、【update-source】
- 【os】:简称operator system 它内部包含操作系统的核心组件(内核、基础库、系统工具),是系统运行的最低依赖包结合
- 【everything】:包含官方支持的软件包(开发工具、第三方包)
- 【debuginfo]:存放着调试符号的文件,用于分析程序崩溃及其性能问题
- 【source]:存放着软件的源码,一般用于二次开发或自定义编译环境
- 【update-source】:源码更新的模块包
核心参数分析
-
name :仓库自定义所取的名字
-
baseurl : 指定仓库的访问路径,在开源的url路径中, b a s e s e a r c h 代表系统的硬件架构, basesearch代表系统的硬件架构, basesearch代表系统的硬件架构, releasever代表的是系统发行的版本号(一般情况下metalink优先级低于baseurl)
-
enabled: 是否启用仓库
-
gpgcheck:代表签名验证,其中1代表启用 0代表禁用,
一旦启用了gpgcheck,就一定需要写gpgkey路径
2.Nginx知识理论总结概括
Nginx简介
Nginx对比与传统Apache服务器其高性能、轻量级能力更强具体可以从以下几个方面进行概述,其优点如下:
- 高并发响应速度快,静态文件并发能力5w/s
- 负载均衡及反向代理能力强
- 系统内存和CPU低占有率
- 可对后端服务进行健康检查
- 可作为缓存代理服务器和邮件代理服务器
代理服务器
正向代理
好比生活中的代购
它实现的技术原理由代理服务器访问你外网地址,但这里的客户端并不是直接找到服务端,通常情况与服务端无法建立直接联系
正向代理通常位于内外网设备,一般用于翻墙和公司内网连接外网
反向代理
类比我们生活中的例子就好比餐馆的客户点餐情况,客户来到餐馆首先是要求前台点餐这里的前台就是反向代理proxy,然后前台确定好点餐信息后将信息给到后厨由后厨完成相关菜品,这里的技术包括`服务隐藏、负载均衡、缓存加速、安全防护`
总的来说做一个以下的概述,参考如图:
Nginx功能汇总
-
正向代理与反向代理(
正向代理则用于商品的代购、反向代理则用于处理静态请求和动态请求
) -
负载均衡(加权轮循、IP哈希)
轮训:均分到服务器 加权轮循:按服务器的性能分配权重 IP哈希:一个IP固定一个服务 ```
-
缓存加速:减少后端请求压力,提高后端动态网页速度
-
SSL/TLS终止:处理HTTPS解密,减轻后端服务器负载负担
Nginx工作原理
Nginx工作主要会依赖各种类型模块,比如我们常说的一些核心模块
HTTP模块,EVENT模块,MAIL模块
还有些基础模块和三方模块比如HTTP FATCGI,HTTP Proxy,Notice
那这些模块有什么功能?我们现在主要还是重点来聊聊功能上Nginx三大模块…
Handler模块
Handler概念
也叫"处理器模块",这类模块主要是为了处理Web请求,并输出处理信息和修改Header信息等操作,一般来说Handllers处理器模块只有一个,这个,模块主要存放于location块中
location /static{root/data/www; //处理static静态资源
}location ~\.php${fastcgi pass 127.0.0.1:9000 //HTTP FastCGI模块}
Handler常用模块
Handler模块 | 作用 |
---|---|
ngx_http_static_module | 返回静态资源模块HTML/CSS/JS |
ngx_http_fastcgi_module | 将请求转发至PHP-FPM等FastCGI后端 |
ngx_http_autoindex_module | 自动生成目录 |
ngx_http_dav_module | 支持DAV协议(文件的上传和删除) |
Filter 模块
Fileter模块概念
也叫“过滤器模块”,这类模块主要用于对处理器请求进行输出,并且也可以修改请求头的信息,
最后由Nginx进行输出。它是针对请求内容进行加工的模块,如果有多个Filter它将按序处理同一请求
location /{gzip on; //用gzip压缩过滤add header X custom "example" //添加响应头过滤器sub filter "old" "new"; //替换文本过滤
}
Filter常用模块
Filter模块 | 作用 |
---|---|
nginx_http_gzip_module | 对过滤到的Web请求实现gzip压缩操作 |
nginx_http_headers_module | 添加或修改响应头数据 |
nginx_http_sub_module | 替换响应头中的文本(HTML文本元素) |
nginx_http_image_file_module | 动态图片调整 |
Proxies模块
Proxies模块概念
也叫“代理器模块”,这类模块主要用的是Nginx的HTTP Upstream模块,通常情况会与后端一些服务
比如FastCGI进行交互,负责的是实现服务代理和负载均衡等功能
location /api{proxy_pass http;
}upstream backend{Sever 192.168.1.8 weight= 2Server 192.168.1.9;
}
Proxies常用模块
Proxy模块 | 作用 |
---|---|
ngx_http_proxy_module | HTTP反向代理 比如Proxy-pass |
ngx_http_fastcgi_module | fastcgi协议代理(PHP-FPM) |
ngx_http_uwsgi_module | uWSGI协议代理(Python Django) |
ngx_upstream_module | 定义后端服务器组,实现负载均衡(轮询、IP哈希 ) |
NGINX工作原理总结
由handler作为生产者接收大量请求,然后经过Filter过滤器经过修改响应内容,将其转发至代理服务器proxy,最后再通过代理将请求转发到后端服务器,服务端然后将其页面结果响应给我们前端服务器,也就是我们的浏览器(客户端),然后用户就能看到内容了。
具体工作流程也可参见下图:
Nginx进程工作原理
流程分析
- 当Nginx服务器启动之后,默认会产生一个监听端口80,并启动一个master进程,然后这个master进程会生成多个工作进程
- 当master进程开始工作时,会通过listen中的socket,fork出很多worker进程
- 此时worker进程会在新连接到来前变成可读状态,从而保证只有一个进程处理该连接,之后再由worker进行在注册listenfd读事件前墙accept_mutex互斥锁,如果抢到了那么此时就会调用accept接收该连接
- 当每个worker进程在accept这个连接之后,就可以处理请求将其响应个客户端可读状态,从而保证只有一个进程处理该连接,之后再由worker进行在注册listenfd读事件前墙accept_mutex互斥锁,如果抢到了那么此时就会调用accept接收该连接
- 当每个worker进程在accept这个连接之后,就可以处理请求将其响应个客户端