Nginx

1、nginx介绍

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网站用户有:百度、京东、新浪、网易、腾讯、淘宝等

1.1、反向代理
正向代理

正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器),为了原始服务器取得内容,客户端向代理服务器发送一个请求并指向目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些代理的设置才能使用
在这里插入图片描述

反向代理

反向代理正好相反。对于客户端来说,反向代理就好像目标服务器,并且客户端不需要进行任何设置,客户端向反向代理发送请求接着反向代理判断请求走向何处,并将请求转发给真正服务器。客户端并不会感知到反向代理后面的服务,因此客户端也不需要做任何设置,只需要把反向代理服务器当作真正服务器就好了
在这里插入图片描述
两者的区别在于代理的对象不一样:正向代理的对象是客户端,反向代理的对象是服务器

1.2、负载均衡

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务

1.3、动静分离

将动态请求和静态请求分离。静态请求由nginx代理,动态请求由服务器处理
在这里插入图片描述

2、nginx安装

环境搭建

1.安装c语言的环境

yum -y install gcc-c++

2.安装pcre环境

yum install -y pcre pcre-devel

3.zlib安装

yum install -y zlib zlib-devel

4.OpenSSL安装

yum install -y openssl openssl-devel
搭建nginx

1.下载nginx压缩包
2.在/usr/local/解压

tar -zxvf nginx-1.16.1 tar.gz -C /usr/local

3.进入解压目录,检测环境

cd /usr/local/nginx-1.16.1
./configure

4.解压并安装

make && make install PREFIX=/usr/local/nginx

5.在sbin目录下启动nginx

cd /usr/local/nginx/nginx/sbin
./configure

6.测试,nginx默认是80端口,浏览器访问ip
在这里插入图片描述

3、反向代理

1、简单代理

域名解析过程
在这里插入图片描述

1.本地windows访问www.taobao.com,访问到linux中的nginx,再由nginx将这个请求代理到tomcat页面中
2.修改windows下的hosts文件,指定ip和域名
C:\Windows\System32\drivers\etc
在hosts文件中加上:
114.55.219.117 www.taobao.com
3.nginx配置文件内容
	1.全局配置
		worker_processes 1;-->指定nginx的并发能力,值越大能力越强
	2.event块
		worker_connections  1024;-->指定worker能处理的最大连接数,静态2个,动态43.http块
		1.引入媒体类型
		2.指定默认的响应头信息
		3.server块:
			1.listen 80;-->指定nginx监听的端口号
			2.server_name 域名|ip-->指定nginx监听的域名/ip地址
			3.location / {
				root 资源目录;	#静态资源代理
				proxy_pass 资源路径;		#动态资源代理
			}
4.具体配置
将nginx配置文件中的server块中的静态资源代理注释,换成如下:
location / {
	proxy_pass http:localhost:8080;
}
5.重启nginx
cd /usr/local/nginx/sbin
检测:./nginx -t
重启:./nginx -s reload
6.浏览器访问www.taobao.com
	客户端请求-->hosts解析域名-->nginx-->转发到tomcat-->tomcat响应给nginx-->nginx响应给客户端
2、通过路径识别
预期效果:
通过本地Windows系统访问www.taobao.com/aa/a.html-->tomcat2号
通过本地Windows系统访问www.taobao.com/bb/b.html-->tomcat3号
解压tomcat到tomcat2和tomcat3中
	1.tomcat2
		1.修改tomcat2占用的端口号(server.xml)
			8005 --> 8006
			8080 --> 8081
			8009 --> 8010
		2.跳转到webapps目录下,并清空内存
			手动创建ROOT目录
			跳转到ROOT目录中创建一个a.html,添加内容tomcat2
		3.启动tomcat2,并监控日志
			cd /root/tomcat2/bin/
			./startup.sh
			cd ../logs/
			tail -f catalina.out
	2.tomcat3(同上)
		1.修改tomcat3占用的端口号
			8005 --> 8007
			8080 --> 8082
			8009 --> 8011
		2.跳转到webapps目录下,并清空内存
			手动创建ROOT目录
			跳转到ROOT目录中创建一个b.html,添加内容tomcat3
		3.启动tomcat3,并监控日志
	3.配置nginx的配置文件(/usr/local/nginx/conf/nginx.conf)
		location / {	
			proxy_pass http:localhost:8080/;
		}
		location /aa/ {	
			proxy_pass http:localhost:8081/;
		}
		location /bb{	
			proxy_pass http:localhost:8082/;
		}
访问www.taobao.com/aa.a.html
	www.taobao.com/bb/b.html

在这里插入图片描述
在这里插入图片描述

4、负载均衡

1、轮询
预期:访问www.taobao.com/aa.a.html,第一次访问找tomcat2,第二次找tomcat3以此类推
1.配置tomcat服务器
	将tomcat3webapps下面的b.html改名为a.html
2.修改nginx配置
		访问www.taobao.com/aa/a.html时,可以代理到tomcat2和tomcat3;
		声明一个服务集,指定多个服务的IP和端口
		upstream servers{
			server localhost:8081;
			server localhost:8082;
		}
		配置具体的server
		server{
			listen 80;
			server_name localhost;
			
			location /aa/ {
				proxy_pass http://servers/;
			}
		}:
	1.upstream需要放在HTTP块中,server块之外
	2.upstream中服务的IP和端口不能添加协议,也就是/
	3.upstream中的各个服务的名称保持一致,server
	4.在server块里location的路径后添加/
2、权重轮询
预期:访问www.taobao.com/aa/a.html,访问5次,四次给tomcat2,1次给tomcat3

只需在轮询的基础上,给每台服务器的IP和端口后面添加weight=xx即可
如: 
	upstream servers {
		server localhost:8081 weight=4;
		server localhost:8082 weight=1;
	}
3、ip绑定.ip_hash
预期:访问www.taobao.com/aa/a.html,无论访问多少次,都指向一台服务器

只需在upstream块中添加 ip_hash;
-->解决session共享问题

5、动静分离

1.准备静态资源(上面演示的都是动态)
	页面:/data/www/index.html
	图片:/data/www/2.jpg
2.配置nginx
	#代理到静态页面
	location /www/ {
		root /root/data/;
		index index.html index.htm;
	}
	#代理图片
	location /img/ {
		root /root/data/;
		autoindex on;
	}
3.访问
	http:www.taobao.com/www/
	http:www.taobao.com/img/

在这里插入图片描述
在这里插入图片描述

6、nginx的集群

1.安装keepalived

yum -y install keepalived

2.修改keepalived配置文件

cd /etc/keepalived/
vim keepalived.conf

3.创建/usr/local/nginx/nginx_check.sh脚本

#!/bin/bash
#判断nginx服务是否启动,如果不存在,调用nginx启用命令,并停止2秒,若#启动失败,杀掉keepalived
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then 
    /usr/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

设置nginx_check.sh权限,设置命令为:

chmod  777  /usr/local/nginx/nginx_check.sh

4.配置keepalived节点信息,默认配置文件为/etc/keepalived/keepalived.conf。keepalived.conf配置文件如下:


! Configuration File for keepalived

global_defs {
   router_id nginx_master154	#唯一值
}

vrrp_script chk_nginx {
   script "/usr/local/nginx/nginx_check.sh"
    interval 2	#检测脚本时间
    weight 20	#服务器宕机之后权重下降
}
vrrp_instance VI_1 {
    state  MASTER	#主服务叫MASTER.备份叫BACKUP
    interface  eth0		#网卡名称
    virtual_router_id 154	#路由的值,主和备一致即可
   mcast_src_ip 10.63.0.154	
    priority 100	#主备的优先级,主大于备就行
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
  track_script {
        chk_nginx
    }
    virtual_ipaddress {
        10.63.0.158
    }
  }
}

5.克隆一份虚拟机

1.修改IP地址
2.修改keepalived配置文件
	router_id nginx_master -->nginx_backup
	state MASTER  --> BACKUP
	priority 100 --> 90

6.在两台虚拟机分别启动nginx和keepalived服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值