nginx
2021-10-06 17:15:27 1 举报
AI智能生成
nginx还需要扩展点是,如何与lua整合,如何与redis进行多级缓存。
作者其他创作
大纲/内容
特点
占有内存少
并发能力强
使用
基本用法
命令行参数
查看端口
ps ef|grep nginx
启动
nginx
停止
从容停止
kill -quit nginx 主进程
nginx -s stop
快速停止
kill -term nginx主进程
重启
nginx -s reload
文件结构
配置文件参考
配置zip
应用
反向代理
用户请求反向代理服务器,反向代理服务器选择目标服务器,获取数据后再返回给客户端
location指令说明
~:表示uri包含正则表达式,且区分大小写
~*:表示uri包含正则表达式,且不区分大小写
=:表示uri不含正则表达式,要求严格匹配
样例
正向代理
正向代理:如果把局部网的internet想象成巨大资源库,则局域网的客户端需要访问internet,需要通过代理服务器来访问,这种代理服务就成为正向代理。
server
设置nginx代理服务,一般是配置到一个server块中。
1.在server块中,不要出现server_name指令,即使不要设置虚拟主机的名称和ip
resolver是必须的,如果没有该指令,nginx无法处理接收到的域名。
nginx代理服务不支持正向代理HTTPS站点。
需要访问外网的客户端上执行以下一种操作
方法1:export http_proxy=http://你的正向代理服务器地址,代理端口
方法2:vim ~/.bashrc export http_proxy=http://你的正向代理服务器地址:代理端口
重定向
rewrite
按照相关的正则表达式与字符串修改url,指令按照在配置文件中出现的顺序执行
HttpRewrite模块
作用域:
server,location,if
例子:
注意:
负载均衡
将原先请求集中到单个服务器上的情况改为增加服务器的数量,然后将请求分发到各个服务器上,将负载分发到不同的服务器
配置
nginx分配服务器策略
轮询(默认)
按照请求的时间顺序依次逐一分配,如果服务器down掉,能自动剔除。
权重
weight越高,被分配的客户端就越多,默认1
ip
按照请求的ip的hash值分配,每个访问固定访问一个后端服务器。
fair
按照后端服务器的响应时间来分配,响应时间短的优先分配到请求。
缓存
静态资源缓存
给一个资源设定一个过期时间,通过expires参数设置,可以使浏览器缓存过期时间之前的内容,
可以减少与服务器之间的请求和流量,也就是说无须去服务端验证,直接通过浏览器自身确认是否过期即可。
所以不会产生额外的流量,此种方法非常适合不经常变动的资源。
可以减少与服务器之间的请求和流量,也就是说无须去服务端验证,直接通过浏览器自身确认是否过期即可。
所以不会产生额外的流量,此种方法非常适合不经常变动的资源。
高可用
为了提高系统高可用性和容错能力,可以增加nginx服务器的数量,当主服务器发生故障或者宕机,备份服务器可以立即充当主服务器进行不间断工作。
keepalived配置
实现效果:
准备两台nginx服务器,通过浏览器地址栏访问虚拟ip地址,把主服务器的nginx停止,再次访问虚拟机ip地址仍然有效、
具体配置:
1.在两台nginx服务器上安装keepalived
keepalived将nginx服务器绑定到一个虚拟ip上,nginx高可用集群对外统一暴露这个虚拟ip,客户端都是通过这个虚拟ip来访问nginx服务器。
keepalived将nginx服务器绑定到一个虚拟ip上,nginx高可用集群对外统一暴露这个虚拟ip,客户端都是通过这个虚拟ip来访问nginx服务器。
2.修改主备服务器/etc/keepalived/keepalivec.conf配置文件(可直接替换),完成高可用主从配置,keepalived将nginx服务器绑定到一个虚拟ip,nginx高可用集群对外暴露这个虚拟ip,客户端都是通过访问这个虚拟ip来访问nginx服务器的。
3.在/usr/local/src 目录下添加检测脚本 nginx_check.sh
4.启动两台服务器的nginx和keepalived
5.查看虚拟ip地址ip a.把主服务器192.168.4.32 nginx和keepalived停止,再访问ip查看高可用效果。
结构与扩展
io多路复用机制
优点
子主题
每个worker的线程可以把cpu的性能发挥到极致,因此worker数和服务器的cpu数相等最合适。
每个worker是独立的进程,如果其中一个worker出现问题,其他不会影响,不会造成服务中断。
每个worker都是一个独立的进程,每个进程里只有一个主线程,通过异步非阻塞处理请求
netty,nginx和redis类似,都采用了io多路复用机制。
问题
发送一个请求,会占用worker几个连接数
从用户的角度,http1.1的协议下,由于浏览器默认使用两个并发连接,发送一个请求,占用两个worker连接数
有一个master和四个worker每个worker支持的最大连接数为多1024,系统支持的并发数是多少
作为http服务器
作为反向代理
nginx把请求代理给网关后容易出现什么问题
会丢失请求的host信息,cookie啥的
如何解决:在proxy_set_header Host $host
nginx直接代理网关,网关判断
如果/api/***,转交给对应的服务器
如果是满足域名,转交给对应的服务
0 条评论
下一页