Nginx
介绍
-
Nginx:
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
-
-
正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。(FQ)
-
反向代理:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
-
优点:
-
可以高并发连接
-
官方测试Nginx能够支撑5万并发连接,实际生产环境中可以支撑2~4万并发连接数。
-
-
内存消耗少
-
成本低廉
-
配置文件非常简单
-
支持Rewrite重写
-
能够根据域名、URL的不同,将http请求分到不同的后端服务器群组。
-
-
内置的健康检查功能
-
如果NginxProxy后端的某台Web服务器宕机了,不会影响前端的访问。
-
-
节省带宽
-
稳定性高
-
用于反向代理,宕机的概率微乎其微。
-
-
支持热部署
工作原理
-
Nginx是由内核和模块组成的。其中,内核的设计非常的微小和简洁,完成的工作也非常的简单,仅仅通过查找配置文件将客户端的请求映射到location block(location是Nginx配置中的一个指令,用于URL匹配)而在这个location中配置的每个指令将会启动不同的模块完成相应的工作。
-
核心模块:HTTP模块、Event模块、Mail模块
-
基础模块:HTTP Access模块、HTTP FastCGl模块、HTTP Proxy模块、HTTP Rewrite模块
-
第三方模块:HTTP Request Hash模块、Notice模块、HTTP Access Key模块
-
Nginx的高并发优势得益于采用epoll模型,于传统的服务器类型不一致(程序的架构不同)
-
epoll模型是在linux内核2.6以后才有的,异步非阻塞
-
而Apache服务器采用的是select模型
-
epoll模型原理:对于事件句柄的选择不是遍历所有事物通知而是事件响应的,就是句柄事件上来立马选择出来,不需要遍历整个事件句柄链表,因此效率特别高
-
select模型原理:select选择句柄的时候,是遍历所有的句柄,也就是说句柄有事件响应时,select需要遍历所有的句柄才能获得哪些句柄上有事件通知,因此效率非常低。
安装配置(linux版)
-
下载Nginx :wget http://nginx.org/download/nginx-1.13.0.tar.gz
-
解压
-
编译:切换nginx安装目录,编译指令./configure
-
解决编译器找不到问题:
-
yum install gcc gcc-c++ ncurses-dev perl
-
yum install pcre pcre-devel
-
yum install zlib gzip zlib-devel
-
-
重新编译
-
安装Nginx服务:make & make install
-
启动Nginx服务:进入sbin里,./nginx
-
查看是否启动成功:ps -ef | grep nginx
常用命令
-
重启nginx:./nginx -s reload
-
关闭nginx:./nginx -s stop
Nginx管理虚拟机
-
三大配置
-
基于域名的虚拟机配置
-
进入配置文件 vi /usr/local/nginx/conf/nginx.conf
-
server {
listen 80;
server_name zhiyou100.com;
location / {
root view;
index login.html;
#在Nginx的安装目录下 建个view目录,在里面存个login.html文件
}
-
-
-
重启Nginx
-
进入sbin目录:./nginx -s reload
-
-
配置本地域名映射
-
进入微软的C:\Windows\System32\drivers\etc目录
-
编辑hosts文件 添加192.168.75.128 zhiyou100.com
-
-
-
基于端口号的虚拟机配置
-
基于IP的虚拟机配置
-
server_name 字段 同样可以存放IP地址(虚拟机的IP地址)
-
负载均衡
-
企业中在解决高并发问题,一般有两种方向的处理策略:软件和硬件
-
从硬件上面来说,公司会添加负载均衡器来分发大量请求
-
从软件方面来说,公司解决高并发瓶颈处:数据库+web服务器两处添加解决方案
-
其中web服务器是最常用的一种解决方案,添加负载均衡就是使用Nginx实现负载均衡
负载均衡的作用
-
转发功能
-
按照一定的算法(轮询、权重)将客户端请求转发到不同的应用服务器上面,减轻单个服务器的压力,提高系统的并发质量。
-
-
故障排除
-
通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器宕机了,自动的将请求转发到其他的应用服务器上面
-
-
恢复添加
-
如果检测到发生故障的应用服务器恢复工作,那么它会自动把恢复的应用服务器添加进去。
-
搭载负载均衡
-
克隆虚拟机
-
打开虚拟机,确保虚拟机处于关机状态
-
点击拍摄快照,定义名字
-
点击克隆
-
点击下一步后,选择创建完整克隆-->指定克隆虚拟机的镜像位置
-
修改虚拟机名称:
hostnamectl set-hostname slave1(虚拟机名称)
-
查看名称是否修改成功:hostname
-
重新启动虚拟机:reboot
-
-
搭建tomcat集群开发步骤
-
开启三个tomcat,每个虚拟机都启动
-
查看tomcat是否启动成功,输入jps,出现bootstrap就说明启动成功
-
-
-
配置Nginx的核心配置文件
-
#配置多个tomcat所在的服务器IP
upstream tomcatServer1{
server 192.168.75.129:8080 weight=3; #ip和端口号 权重 red
server 192.168.75.128:8080; #yellow
server 192.168.75.130:8080 weight=5;
}
server{
listen 80;
server_name zhiyou200.com;
location / {
proxy_pass http://tomcatServer1; #代理
}
} -
配置web服务器集群的时候,在nginx中可以设置几个变量或者参数
-
weight (权重) :值越大,承担负载均衡的压力就越大(访问次数增多)
-
按照配置文档中设置就是 1+3+5 =9,访问zhiyou200.com网页9次中,其中背景为红色的页面一共出现三次,黄色页面为一次,白色页面为五次
-
-
max_fails :允许失败的最大请求次数
-
backup (闲置,备用机): 其他所有的非backup服务器宕机或者忙机状态的时候,请求backup指定的服务器
-
fail_timeout : 失败超时时间
-
-
-
部署项目
-
第一步
-
修改tomcat的配置文件server.xml /usr/local/tomcat/conf/server.xml
-
修改tomcat默认的访问项目名称和项目的发布路径,docBase就是war包名称(虚拟目录/项目名称)
<Context path="" docBase="video" reloadable="true"/>
-
-
第二步
-
修改springmvc配置文件,指定默认的访问路径
-
<mvc:view-controller path="/" view-name="forward:/front/user/index.do"/>
-
然后重新打成war包
-
-
第三步
-
修改nginx的配置文件 nginx.conf
-
#配置多个tomcat所在的服务器IP
upstream tomcatServer1{
server 192.168.75.129:8080 weight=3; #ip和端口号 权重
server 192.168.75.128:8080;
server 192.168.75.130:8080 weight=5;
ip_hash;#可以解决session共享
}
server{
listen 80;
server_name zhiyou200.com;
location /{
proxy_pass http://tomcatServer1; #代理
index /;#添加上该行
}
}
-
-
第四步
-
解决样式找不到问题
-
如果把tomcat的端口号改为80,样式就可以显示出来,但是这会和nginx的端口号产生冲突,所以一般不把开启nginx的那台服务器去打开tomcat
-
-
-
-