1、什么是ngnix
1.作为http服务器进行网站发布处理
ngnix配置域名+端口
然后把这个域名映射在阿里云上进行域名解析
2.反向代理进行负载均衡
用户不需要知道目标服务器地址,就可以访问目标服务器的资源
2、ngnix三大功能
动静分离
负载均衡
反向代理
3、如何做动静分离
根据客户端请求的url,里面会包含jpg ,png,.php等,来判断请求是否是静态资源
4、为什么选择ngnix
响应更快
异步非阻塞+多进程
处理更多的并发
高可靠性
高扩展性
5、ngnix高效的原因 ngnix服务器并行处理多个客户端请求的三种工作方式
单进程阻塞
单进程IO复用
多进程
1.单进程阻塞:
一次只能处理一个连接
2.单进程IO复用
一个进程或者线程可以处理多个请求
一个进程可以监视多个socket
select
调用后select会阻塞,知道有数据,或者超时,函数才会返回
poll
与上面的select没有太大的区别,管理着多个描述符,对描述符进行轮询,但是没有最大文件描述符的数量限制
epoll
没有文件描述符的限制,不需要轮询
当连接有IO流事件产生的时候,epoll就会告诉进程是哪个连接有事件发生,然后进程就会去处理这个连接
6、ngnix多进程
主要是通过异步非阻塞的事件驱动模型 和 多进程机制 实现高性能的
进程之间不共享资源,不需要加锁
采用独立的进程,可以让进程互不影响
7、秒杀,抢购,并发控制
单位时间内的请求数
limit_req_zone
单位时间内的ip请求数
limit_req_conn
ngnix限制连接数
ngx_http_limit_conn_module
8、ip访问控制模块
http_access_module
9、黑白名单
allow deny
10、ngnix限制浏览器访问和爬虫
http_user_agent
11、防盗链实现
reference模块
12、失败重试
max_fails = xx
fail_time_out = 30s
13、负载均衡方法
轮询
加权轮询
ip hash
最少连接数
1.轮询
location upstream{
proxy_pass : xxxx
}
2.加权轮询
weight
3.ip hash
location upstream{
ip_hash : xxxx
}
4.最少连接数
least_conn
14、ngnix缓存机制
读取数据库前,会先判断本地有没缓存数据
缓存的分类:
服务端
客户端
1.服务器
expire,etag,if_modified_since
2.客户端
etag
if_modified_since
last_modified
if_none_match
cache_controller
15、ngnix和fpm是怎样通信的,使用的是什么的通信
tcp socket
允许通过网络进程间的通信
unix socket
允许在本地运行的进程间通信
16、帮助公司在接入层实现DOS等的防护
短时间内发起大量的请求,导致目标服务器瘫痪而无法访问
防御:
设置黑白名单
ip访问控制模块
限制到后端服务器的连接数
流量削峰
限流 限速
17、熟练基于ngnix+lua扩展的接入层高并发优化技术以及防御技术,成功运用于秒杀,限流,降级,接口管理等复杂业务场景。
限流
降级
限流
1.ngx_http_limit_req_module
2.ngx_http_limit_conn_module
提供了简单的参数配置
ngnix + lua 实现自动ip封禁和限流
设置限流key
降级
广告推荐模块
连接redis 根据开关的不同 获取不同的数据
18、全局网关的作用
安全把控,黑白名单
日志记录
认证 注册 登录 权限验证
限流
降级
19、前端如何调用微服务
微服务
模块化开发
RAM用户权限系统
SDK系统
pay支付系统