Ngnix介绍
Nginx (engine x) 是一个高性能的和反向代理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网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Ngnix安装
下载
官方网站:https://nginx.org/en/download.html
Linux下安装
Nginx依赖包
模块依赖性Nginx需要依赖下面3个包
依赖包安装顺序依次为:openssl、zlib、pcre, 最后安装Nginx包。
安装教程(源码安装)
step 0:前置安装
yum -y install gcc
yum -y install gcc-c++
step 1:下载所需包
openssl-fips-2.0.2.tar.gz
zlib-1.2.7.tar.gz
pcre-8.21.tar.gz
nginx-1.12.2.tar.gz
step 2:安装OpenSSL
[root@localhost wcw]# tar -zxvf openssl-fips-2.0.2.tar.gz
[root@localhost wcw]# cd openssl-fips-2.0.2
[root@localhost openssl-fips-2.0.2]# ./config
[root@localhost openssl-fips-2.0.2]# make
[root@localhost openssl-fips-2.0.2]# make install
step 3:安装zlib
[root@localhost wcw]# tar -zxvf zlib-1.2.7.tar.gz
[root@localhost wcw]# cd zlib-1.2.7
[root@localhost zlib-1.2.7]# ./configure
[root@localhost zlib-1.2.7]# make
[root@localhost zlib-1.2.7]# make install
step 4:安装pcre
[root@localhost wcw]# tar -zxvf pcre-8.21.tar.gz
[root@localhost wcw]# cd pcre-8.21
[root@localhost pcre-8.21]# ./configure
[root@localhost pcre-8.21]# make
[root@localhost pcre-8.21]# make install
step 5:安装Nginx
[root@localhost wcw]# tar -zxvf nginx-1.12.2.tar.gz
[root@localhost wcw]# cd nginx-1.12.2
[root@localhost nginx-1.12.2]# ./configure --prefix=/usr/install/nginx --with-pcre=../pcre-8.21 --with-zlib=../zlib-1.2.7 --with-openssl=../openssl-fips-2.0.2
[root@localhost nginx-1.12.2]# make
[root@localhost nginx-1.12.2]# make install
请注意:"–with-xxx="的值是解压目录,而不是安装目录!
Nginx Linux基本操作指令
启动服务:nginx
退出服务:nginx -s quit
强制关闭服务:nginx -s stop
重载服务:nginx -s reload (重载服务配置文件,类似于重启,但服务不会中止)
验证配置文件:nginx -t
使用配置文件:nginx -c "配置文件路径"
使用帮助:nginx -h
端口设置
firewall-cmd --zone=public --add-port=80/tcp --permanent;
重新加载防火墙
firewall-cmd --reload;
Nginx的配置文件
在nginx安装目录(一般是/usr/local/redis/sbin)\conf\nginx.conf
1、全局配置
worker_processes 4; #配置工作进程数
2、events块
events {
worker_connections 1024; #连接数
}
3、http块
http {
include mime.types; #支持的类型,访问静态内容,如果不支持就进行下载
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#gzip on;
server { #服务器的配置
listen 80; #设定服务器端口
server_name localhost; #服务器名称
location / { #服务器的路由 /
root html; #根目录
index index.html index.htm; #访问的页面
}
error_page 500 502 503 504 /50x.html;
location = /50x.html { #配置错误页面路由
root html;
}
}
}
Ngnix配置反向代理
1、安装Tomcat
2、复制tomcat1和tomcat2
3、修改tomcat1和tomcat2中的端口(包括shutdown端口)
4、在两个tomcat中添加应用
5、启动两个tomcat服务并测试
192.168.43.130:8081/项目名称/
192.168.43.130:8082/项目名称/
6、在nginx中配置反向代理
upstream tomcat{
server 192.168.174.130:8081;
server 192.168.174.130:8082;
}
server {
listen 80;
server_name abc1;
charset utf-8;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat/abc/;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
error_page 404 /40x.html;
location = /40x.html {
root html;
}
}
7、测试(只访问nginx)
192.168.174.130:80
负载均衡及常用算法
nginx常用负载均衡算法有6种:
nginx本身支持4种:轮询(round robin), 加权轮询(weight round robin), ip_hash, 最小连接(least_conn)
第三方模块,支持2种:最快响应时间(fair), url_hash
1. 轮询(round robin)
轮询,依次将请求分配到各个后台服务器,默认方式,挂掉的服务可自动剔除。
2. 加权轮询(weight round robin)
根据权重将请求分配到不同的机器中
3. ip_hash
根据请求的ip的hash值分配到对应的后台服务器,可以保证同一ip请求总是到同一个后台服务器,可解决session问题。
4. 最小连接(least_conn)
优先将请求分配给连接最少的服务器,这样可以避免将请求发给压力较大的服务器
5. url_hash
根据请求的url的hash值分配服务器,当后台服务器为缓存时,效率较高
6. 最快响应时间(fair)
根据服务器响应时间来分发,响应时间短,分发越多。
Nginx负载均衡算法
首先呢我在这里给大家先介绍一下什么是负载均衡,他的常见算法有哪些。
Nginx他是一个扩展性非常强大的WEB服务器软件,他能够支持除自己本身以外的第三方调度算法,如:fair、url_hash等等。
负载均衡(参照网络)
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
常见的调度算法
Nginx本身支持的算法:轮询(RR)、加权轮询(WRR)、ip_hash、least_conn
轮询(Round-Robin,RR):默认情况下Nginx服务器实现负载均衡的算法就是轮询,轮询策略按照顺序选择组内服务器处理请求。如果一个服务器在处理请求的过程中出现错误,请求会被顺次交给组内的下一个服务器进行处理,以此类推,直到返回正常的响应为止。但如果所有的组内服务器都出错,则返回最后一个服务器的处理结果。
例子:
upstream rr {
server 192.168.1.10;
server 192.168.1.20;
server 192.168.1.30;
}
加权轮询(Weighted Round-Robin,WRR):为组内服务器设置权重,权重值高的服务器被优先用于处理请求。此时组内服务器的选择策略为加权轮询。组内所有服务器的权重默认设置为1,即采用轮询处理请求。
例子:
upstream wrr {
server 192.168.1.10 weight=3;
server 192.168.1.20 weight=2;
server 192.168.1.30 weight=1;
}
ip_hash:ip_hash用于实现会话保持功能,将某个客户端的多次请求定向到组内同一台服务器上,保证客户端与服务器之间建立稳定的会话。只有当服务器处于无效(down)的状态时,客户端请求才会被下一个服务器接收和处理。注意:使用ip_hash后不能使用weight,ip_hash和主要根据客户端IP地址分配服务器,因此在整个系统中,Nginx服务器应该是处于最前端的服务器,这样才可以获取到客户端IP地址,否则它得到的IP地址将是位于它前面的服务器地址,从而就会产生问题。
例子:
upstream iphash {
ip_hash;
server 192.168.1.10;
server 192.168.1.20;
server 192.168.1.30;
}
least_conn:least_conn用于为网络连接分配服务器组内的服务器,在功能上实现了最小连接数负载均衡算法,在选择组内的服务器时,考虑各服务器权重的同时,每次选择的都是当前网络连接最少的那台服务器,如果这样的服务器有多台,就采用加权轮询选择权重值大的服务器。
例子:
upstream leastconn {
least_conn;
server 192.168.1.10 weight=3;
server 192.168.1.20 weight=2;
server 192.168.1.30 weight=1;
}
Ngnix配置动静分离
动辞分离
静态资源交始nginx管理
动态资源交给tomcar管理
一份静态资源可以共给多个动态资源使用
1、将静态资源拷贝到linux下
/usr/static
2、配置nginx
location ~ .(jpg|png|css|js|html){
root /usr/static;
}
3、访问静态资源
http://192.168.174.130/css/a.css
4、拷贝动态资源到tomcat下
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<link rel="stylesheet" href="http://192.168.174.130/css/a.css"> <!-- nginx中配置的静态资源 -->
</head>
<body>
<%=new java.util.Date() %>
<div >
hello 动静分离
</div>
</body>
</html>
5、访问动态资源
http://192.168.174.130/abc/a.jsp