一、nginx的基本概念
1、nginx是什么,能做什么事情
1.1 nginx概述
nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强。nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接
2、反向代理
2.1 正向代理
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问(正向代理代理的是客户端,服务器不知道实际的客户端是谁)
2.2 反向代理
反向代理代理的是服务器,客户端对反向代理是无感知的,我们只需要将请求发送到反向代理服务器,由反向代理服务器取选择目标服务器再返回给客户端,客户端不知道真正的后台服务器是谁,暴露的是代理服务器的地址。
3、负载均衡
在服务器访问量很大的情况下,单个服务器无法承担那么高的并发数,因此我们增加服务器的数量,然后将请求分发到多个服务器上,将原先请求集中在单个服务器上改为将请求分发刀多个服务器上,这就是负载均衡。
4、动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力
二、nginx安装、命令和和配置文件
1、在linux系统中安装nginx
1.1 安装依赖包:yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre
1.2 安装nginx:默认安装在/usr/local目录下
(1) 官网下载nginx安装包上传至linux服务器
(2) 解压:tar -zxvf nginx-1.12.2.tar.gz
(3) 进入目录执行./configure
(4) make && make install
2、nginx常用的命令
2.1 查看版本号 :
2.2 启动 | 停止 | 重加载
# cd /usr/local/nginx/sbin/
# ./nginx #启动
#./nginx -s stop #停止
#./nginx -s reload #重加载
2.3 语法测试
3、nginx配置文件
3.1 全局块
从配置文件开始到events块之间的内容,主要是设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户(组)、允许生成的work_process数,进程pid存放路径、日志存放路径、类型已经配置文件的引入
3.2 events块
events块涉及到的指令主要影响nginx服务器与用户的网络连接,比如worker_connections 1024,表示支持的最大连接数为1024个
3.3 http块
(1)http全局块
文件引入、MIME-TYPE类型定义、日志自定义、连接超时时间
(2)server块
配置监听端口,服务器名称等
三、nginx配置的实例
1、实现反向代理
实例1:
需求:浏览器输入www.test.com ,跳转到tomcat的默认界面
准备工作:windows或linux中安装好tomcat服务器,使用默认端口8080访问默认页面
步骤:
1.1、在windows中配置IP地址与域名的对应关系,修改C:\Windows\System32\drivers\etc下的hosts文件
1.2、在nginx中配置请求转发的配置
1.3、测试nginx语法
测试成功之后,在/usr/local/nginx/sbin下,执行./nginx 启动nginx
1.4、在浏览器中输入ip地址测试,发现此时页面已经被转发到172.18.51.193(安装tomcat的windows主机)的8080端口
在浏览器输入域名访问:
实例2、实现不同上下文转发
输入http://192.168.148.138/edu/ 转发到172.18.51.193:8080端口
输入http://192.168.148.138/vod/ 转发到192.168.148.138:8081端口
1.1、准备工作,安装两个tomcat,并修改其中一个的默认端口8081
1.2、创建访问的页面:
1.3、配置nginx
# cd /usr/local/nginx/sbin
# ./nginx -t #检测语法错误,测试成功才能重启
# ./nginx -s reload #nginx重新加载
1.4、访问测试
2、nginx实现负载均衡
(1)实现效果:地址栏输入ip地址http://192.168.148.138/edu/a.html实现负载均衡效果,转发到后台服务器8080和8081端口中去
(2)准备工作:准备两台tomcat服务器,发布不同页面以作区分
()
(3) 配置nginx负载均衡
(4)测试
浏览器输入: http://192.168.148.138/edu/a.html,刷新,会发现两个不同页面交替出现
补充:nginx负载均衡策略
(1)轮询(默认):每个请求按每个请求按时间顺序逐一分配到不同的后端服务器,如果服务器down机能自动剔除。
(2)weight(权重):默认值为1,权重越高被分配的客户端越多,写法:weight=3
(3)ip_hash:每个请求按照ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
(4)fair:按照后端服务器的响应时间来分配请求,响应时间短的优先分配
3、nginx实现动静分离
(1)准备静态资源
# cd /
# mkdir -p /data/www #创建之后上传几个html文件
# mkdir -p /data/images #创建之后上传几个图片
(2)nginx配置
其中autoindex on参数是列出当前路径下的文件。
检查语法是否正确,并启动nginx,浏览器输入ip地址进行测试
四、nginx配置高可用集群
在两台机器上安装nginx和keepalived,配置keepalived的配置文件keepalived.conf
五、nginx原理
1、master-worker机制的好处
(1)可以使用nginx -s reload,利用nginx进行热部署
(2)每个worker是一个独立的进程,如果其中有worker出现问题,其他worker可以进行争抢,实现请求过程,不会造成服务中断
2、设置多少个worker合适:
worker数和服务器的cpu数相等最为适宜
nginx和redis类似,都采用io多路复用机制,每个worker都是一个独立的进程,但是每个进程里只有一个主线程
3、连接数worker_connection
(1):发送请求,占用2或4个
(2):nginx有一个master,四个worker,每个worker支持最大的连接数为1024,支持多大的并发数?
普通静态访问的最大并发数是:worker_connection*worker_process/2.如果是HTTP作为反向代理来说,最大并发数量应该是worker_connection*worker_process/4