第七章:Nginx
第1节:概述
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。 Nginx: 高性能 http反向代理web服务器 特点: 占用内存少 并发能力强
第2节:应用场景
1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。 2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。 3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
第3节:linux下nginx的安装
3.1 检索否安装了Nginx
ps aux | grep nginx
3.2 安装Nginx
3.2.1 下载nginx
官网地址:http://nginx.org/en/download.html
3.2.2 上传到linux操作系统
3.2.3 对nginx进行解压缩
tar zxf nginx-1.8.0.tar.gz
3.2.4 安装gcc
yum install gcc-c++
3.2.5 安装pcre库
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。 yum install -y pcre pcre-devel
3.2.6 安装zlib库
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。 yum install -y zlib zlib-devel
3.2.7 安装openssl库
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。 yum install -y openssl openssl-devel
3.2.8 使用命令安装
进入nginx-1.8.0目录,使用configure命令安装 注意:下边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录 mkdir /usr/local/ujiuye/nginx mkdir /var/run/nginx mkdir -p /var/temp/nginx/client ./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi
3.2.9 编译安装
先使用make进行编译,然后使用make install再进行按装。 make make install cd /usr/local/nginx ls conf sbin html 目录 ,此时说明Nginx安装成功~
3.3 启动Nginx
进入nginx装好的nginx目录下的sbin目录下键入 ./nginx进行启动
3.4 访问测试
在浏览器输入:http://192.168.18.200
ngnix的命令:
启动: ./nginx
关闭: ./nginx -s quit 安全退出(会保存更改)
./nginx -s stop 强制退出
重启 ./nginx -s reload
第4节:nginx实现负载均衡
本章主要介绍负载均衡概念,负载均衡的设计思想,具体演示负载均衡的实现步聚和nginx管理多个tomcat的具体配置。
4.1 负载均衡介绍
4.1.1 什么是负载均衡
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
4.1.2 负载均衡设计思想
一台普通服务器的处理能力是有限的,假如能达到每秒几万个到几十万个请求,但却无法在一秒钟内处理上百万个甚至更多的请求。但若能将多台这样的服务器组成一个系统,并通过软件技术将所有请求平均分配给所有服务器,那么这个系统就完全拥有每秒钟处理几百万个甚至更多请求的能力。这就是负载均衡最初的基本设计思想。 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求按照某种策略分配到服务器集合的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡解决了大量并发访问服务问题,其目的就是用最少的投资获得接近于大型主机的性能。
4.2 负载均衡环境搭建
4.2.1 安装配置tomcat1
1. 安装JDK
tar -zxf jdk-8u161-linux-x64.tar.gz
2. 环境变量设置
在/etc/profile 中进行环境变量设置 #JAVA_HOME export JAVA_HOME=/usr/local/jdk1.8.0_161 export PATH=$PATH:$JAVA_HOME/bin
3. 加载profile
source /etc/profile
4. 解压
tar -zxf apache-tomcat-9.0.21.tar.gz mv apache-tomcat-9.0.21 tomcat1
5. 修改tomcat
修改tomcat的webapps/ROOT/index.jsp
6. 修改tomcat1的端口
4.2.2 安装配置tomcat2
1. 解压
tar -zxf apache-tomcat-9.0.21.tar.gz mv apache-tomcat-9.0.21 tomcat1
2. 修改tomcat
修改tomcat的webapps/ROOT/index.jsp
3. 修改tomcat2的端口
4.2.3 配置nginx
upstream tomcat{ server 192.168.18.200:8081; server 192.168.18.200:8082; } server{ location / { proxy_pass http://tomcat; index index.html index.htm; } }
4.3 发动请求测试负载均衡
发送请求http://192.168.18.200/index.jsp 刷新进行测试。
第5节:nginx实现动静分离
在企业开发中,为了理好的处理动态次源和提高服务器的响应速度,一般采用动态内容和静态内容进行分离,具体讲解并演示动静分离配置。
5.1 动静分离介绍
5.1.1 什么是动静分离
动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。
5.1.2 动静分离优势
Tomcat处理静态资源的效率并没有Nginx高,我们可以通过动静分离将静态资源和动态资源分割开来,Tomcat处理动态资源,Nginx响应静态资源,从而减轻tomcat的压力,各自发挥自己的长处,从而提高响应速度,提高访问能力。
5.2 动静分离配置
5.2.1 tomcat1部署
创建文件名show.jsp的文件并在tomcat1 ROOT上进行部署 <%@ page language="java" import="java.util.Date,java.text.SimpleDateFormat" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <h1>这是tomcat1主页</h1> <% Date date=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String strDate=sdf.format(date); out.println(strDate+"<br>"); %> <img src="images/aaa.jpg"> </body> </html>
5.2.2 tomcat2部署
在tomcat2上部署show.jsp文件 <%@ page language="java" import="java.util.Date,java.text.SimpleDateFormat" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <h1>这是tomcat2主页</h1> <% Date date=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String strDate=sdf.format(date); out.println(strDate+"<br>"); %> <img src="images/aaa.jpg"> </body> </html>
5.3 nginx配置动静分离
upstream tomcat{ server 192.168.18.201:8081 weight=2; server 192.168.18.201:8082; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcat; index index.html index.htm; } location ~\.(jsp|do|action)$ { proxy_pass http://tomcat; } location ~\.(html|css|js|gif|jpg|png|bmp|swf)$ { root /usr/local/staticresources; } } 创建这个路径的文件夹/usr/local/staticresources 下创建一个images文件夹,存入aaa.jpg
5.4 测试
输入http://192.168.18.200/show.jsp