Nginx介绍,安装、反向代理、负载均衡、动静分离

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个包

  1. ssl功能需要 openssl 库 ( 点击下载 )
  2. gzip模块需要 zlib 库 ( 点击下载 )
  3. rewrite模块需要 pcre 库 ( 点击下载 )

依赖包安装顺序依次为: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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何呵呵是大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值