#### Nginx的特点
* 擅长处理静态小文件(1M)
* 支持高并发(支持epoll模型)
* 占用资源少
* 2W并发连接,10个进程,200M内存
* 配置简单、灵活、轻量
* 功能丰富(Web、Proxy、Cache)
* 工作在IOS第七层(支持限速、连接数限制等)
#### Nginx基本功能
* 静态服务(图片、视频、css、js、html)
* 基于域名/IP/端口的虚拟主机
* Http/Https、SMTP、POP3反向代理
* TCP/UDP反向代理
* FastCGI、uWSGI反向代理
* 负载均衡
* 页面缓存(CDN)
* 支持gzip、expirse
* URL Rewrite
* 路径识别
* 基于IP、用户的访问控制
* 支持访问速率、并发限制
* 反向代理(适用2000WPV、并发连接1W/秒)
#### Nginx原理
##### master process
1. 与外界通讯和工作进程管理
2. 读取nginx配置文件并验证有效性
3. 建立、绑定和关闭Socket
4. 按照配置文件生成、管理和结束工作进程
5. nginx重启、停止、重载配置文件、平滑升级、管理日志文件
##### worker process
1. 接收客户端请求,讲请求交给各个功能模块处理
2. 系统IO调用,获取相应的数据,发送相应给客户端
3. 数据缓存管理
4. 接收主进程指令,比如重启、关闭
##### 缓存索引重建及管理进程
cache模块主要由缓存索引重建和缓存索引管理两个进程完成,缓存索引重建进程是在nginx服务启动一段时间后(默认1分钟),由主进程生成,对本地磁盘的索引文件在内存中建立元数据,包括扫描、过期更新等操作,完成后退出
* 模块只有使用时才加载
#### Nginx常用模块
核心模块
* Core functionality
标准模块
* ngx\_http\_core\_module
* ngx\_http\_access\_module
* ngx\_http\_fastcgi\_module
* ngx\_http\_gzip\_module
* ngx\_http\_rewrite\_module
* ngx\_http\_upstream\_module
* ngx\_http\_proxy\_module
* ngx\_http\_limit\_conn\_module
* ngx\_http\_limit\_req\_module
* ngx\_http\_auth\_basic\_module
* ngx\_http\_log\_module
* ngx\_http\_ssl\_module
* ngx\_http\_status\_module
* ngx\_http\_realip\_module
#### Nginx(Proxy)支持的算法
rr 轮询wrr 权重轮询iphash hash算法(解决session命中)urlhash hash算法fair 动态算法(响应时间最短)
### Nginx部署(1.8.1)
#### 安装依赖
~~~
yum install openssl-devel pcre-devel pcre gcc zlib -y
~~~
* pcre 正则处理需要
* gcc 编译需要
* zlib 压缩需要
* openssl 安全链接需要
~~~
#### 基本操作
~~~
#启动
/app/nginx/sbin/nginx
#停止
/app/nginx/sbin/nginx -s stop
# 检查语法
/app/nginx/sbin/nginx -t
#重启
/app/nginx/sbin/nginx -s
#重启原理:生成基于新配置的线程,新请求转发到新线程,旧线程处理完成后停止。
~~~
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file
~~~
- 文章翻译
- Large-scale cluster management at Google with Borg
- Borg Omega and kubernetes
- scaling kubernetes to 7500 nodes
- bpf 的过去,未来与现在
- Demystifying Istio Circuit Breaking
- 知识图谱
- skill level up graph
- 一、运维常用技能
- 1.0 Vim (编辑器)
- 1.1 Nginx & Tengine(Web服务)
- 基础
- 1.2 zabbix
- 定义
- 登录和配置用户
- 1.3 RabbitMQ(消息队列)
- 原理
- RabbitMQ(安装)
- 1.4虚拟化技术
- KVM
- 1.5 Tomcat(Web中间件)
- 1.6Jenkins
- pipline
- 1.7 Docker
- network
- 1.8 Keepalived(负载均衡高可用)
- 1.9 Memcache(分布式缓存)
- 1.10 Zookeeper(分布式协调系统)
- 1.11 GitLab(版本控制)
- 1.12 Jenkins(运维自动化)
- 1.13 WAF(Web防火墙)
- 1.14 HAproxy负载均衡
- 1.15 NFS(文件传输)
- 1.16 Vim(编辑器)
- 1.17 Cobbler(自动化部署)
- 二、常用数据库
- 2.1 MySQL(关系型数据库)
- mysql主从复制
- 2.2 Mongodb(数据分析)
- 2.3 Redis(非关系数据库)
- 三、自动化运维工具
- 3.1 Cobbler(系统自动化部署)
- 3.2 Ansible(自动化部署)
- 3.3 Puppet(自动化部署)
- 3.4 SaltStack(自动化运维)
- 四、存储
- 4.1 GFS(文件型存储)
- 4.2 Ceph(后端存储)
- 五、运维监控工具
- 5.1 云镜
- 5.2 ELK
- 六、运维云平台
- 6.1 Kubernetes
- 6.2 OpenStack
- 介绍
- 安装
- 七、Devops运维
- 7.1 理念
- 7.2 Devops运维实战
- 八、编程语言
- 8.1 Shell
- 书籍《Wicked Cool Shell Scripts》
- 8.2 Python
- 8.3 C
- 8.4 Java
- leecode算法与数据结构
- 九、杂记
- 高优先级技能
- 知识点
- JD搜集
- 明显的短板
- 1.0 Python
- 1.1 Kubernetes
- 1.18.2 《kubernetes in action》
- 遗漏知识点
- 1.18.3 GCP、azure、aliyun
- Azure文档
- 1.18.5 《program with kubernetes》
- Istio
- HELM
- 《Kubernetes best practice》
- Kubernetes源码学习
- Scheduler源码
- 调度器入口
- 调度器框架
- Node筛选算法
- Node优先级算法
- pod抢占调度
- 入口
- 主要代码结构
- new
- 文章翻译
- Flannel
- 从二进制集群搭建
- 信息收集
- docker优化
- 1.2 shell
- 面试题
- grep awk sed 常见用法
- shell实践
- 1.3 Data structure(数据结构)
- Calico
- Aliyun文档以及重点模块
- git
- 大数据组件
- 前端,后端,web框架
- cgroup,namespace
- 内核
- Linux搜集
- crontab
- centos7常用优化配置
- centos Mariadb
- eBPF
- ebpf的前世今生
- Linux性能问题排查与分析
- 性能分析搜集
- 性能分析常用10条
- 网络性能优化
- 文本处理命令
- sql
- Iptables
- python面试题
- iptables
- iptables详细
- zabbix面试题,proj
- prometheus
- web中间件
- nginx
- Haproxy
- grep sed awk
- Linux常用命令
- 云平台
- 书籍Linux应用技巧
- kafka
- kafka面试题
- ETCD
- Jenkins
- 3天补充的点
- K8s源码
- K8s
- k8s实操
- etcd
- test
- BPF
- PSFTP使用
- StackOverflow问答精选
- 问题
- 我对于学习思考
- 修改ssh超时时间
- 课程目录
- 运维与运维开发
- The Person
- 个人杂谈
- mysql主从复制
- 对于工作的认识与思考