nginx简介
高性能发HTTP和反向代理服务器,特点是占用内存少、并发能力强。专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,有报告表面,最高支持5万并发连接数
nginx安装
1、安装nginx相关依赖
安装gcc、g++,用来编译源码;
$ yum install -y gcc gcc-c++
PCRE,Perl正则表达式;
$ yum install pcre pcre-devel
zlib,gzip压缩;
$ yum install zlib zlib-devel
OpenSSL,SSL协议。
$ yum install openssl openssl-devel
2、nginx的安装
1)下载nginx解压
2)进入解压文件目录
3)执行./configure
4)执行make && make install
5)进入/usr/local/nginx/sbin下使用脚本启动nginx
nginx常用命令
1、前提:使用nginx命令前,首先进入到nginx的目录
/usr/local/nginx/sbin
2、查看nginx版本号
./nginx -v
3、启动nginx
./nginx
4、关闭nginx
./nginx -s stop
5、重新加载nginx(重新加载配置文件)
./nginx -s reload
nginx配置文件
1、配置文件位置
/usr/local/nginx/conf/nginx.conf
2、配置文件组成
1)全局块:配置服务器整体运行的配置指令
eg:worker_processes 1; 处理并发数的配置
2)events块:影响Nginx服务器与用户的网络连接
eg: worker_connection 1024; 支持的最大连接数1024
3)http块
http全局块
http全局块配置的指令包括文件引入、MIME-TYPE定义、日志定义、连接超时时间、单连接请求上限等
server块
3、location配置说明
nginx 反向代理
图解反向代理
1)正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网的访问
2)反向代理:将请求发给反向代理服务器nginx,由反向代理服务器去选择目标服务器获取数据,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器ip地址。
配置文件修改
nginx 负载均衡
图解负载均衡
增加服务器的数量将请求分发到不同的服务器上,将原先请求集中在一台服务器的情况改为将请求分发到多台服务器上,将负载分发到不同的服务器。
负载均衡策略
1) 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
2) 权重(weight)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight代表权重,默认为1,权重越高被分配的客户端越多
3) Ip_hash
每个请求按访问ip的hash结果分配,这样每个访问固定访问一个后端服务器,可以解决session问题。
4) fair(第三方)
按服务器的响应时间来分配请求,响应是极端的优先分配
!](https://img-blog.csdnimg.cn/20200212115644437.png)
配置方式
1) 在HTTP块中增加一个upstream模块
upstream myserver{
Server ip地址:端口号;
Server ip地址:端口号;
}
2) 在server中的location中增加如下
Server {
Location / {
Proxy_pass http://myserver;
}
}
配置实例
nginx 动静分离
为了加快服务器的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力
图解动静分离
nginx 高可用集群
图解高可用
准备
1)准备两台linux服务器
2)两台都安装nginx
3)安装keepalived
4)修改keepalived的配置文件(/etc/keepalived/keepalived.conf)
最终在浏览器地址输入虚拟IP即可
nginx 原理
master && worker
master-workers的机制的好处
首先,对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的worker进程。当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worker.上的所有请求失败,不过不会影响到所有请求,所以降低了风险。