Nginx基础入门到实践基础教程

1.Nginx概念

Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能

力强,,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,

中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载

的考验,有报告表明能支持高达50, 000个并发连接数。

使用代理服务器有什么优点:

(1)提高访问速度

由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。

(2)防火墙作用

由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。

(3)通过代理服务器访问不能访问的目标站点

互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,可直接访问外网。

2.反向代理

**1)**正向代理

正向代理:客户端 <一> 代理 一>服务端

正向代理简单地打个租房的比方:

A(客户端)想租C(服务端)的房子,但是A(客户端)并不认识C(服务端)租不到。B(代理)认识C(服务端)能租这个房子所以你找了B(代理)帮忙租到了这个房子。

这个过程中C(服务端)不认识A(客户端)只认识B(代理)C(服务端)并不知道A(客户端)租了房子,只知道房子租给了B(代理)。
在这里插入图片描述

2)反向代理

反向代理:客户端 一>代理 <一> 服务端

反向代理也用一个租房的例子:

A(客户端)想租一个房子,B(代理)就把这个房子租给了他。这时候实际上C(服务端)才是房东。B(代理)是中介把这个房子租给了A(客户端)。

这个过程中A(客户端)并不知道这个房子到底谁才是房东 他都有可能认为这个房子就是B(代理)的

总结:

代理服务器站在客户端那边就是正向代理,

代理服务器站在原始服务器那边就是反向代理,

Nginx通过proxy_pass可以设置代理服务。

我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据

后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器, 暴露的是代理服务器地址,隐藏了真实服务器IP地址。

![在这里插入图片描述](https://img-blog.csdnimg.cn/d30fc99de9314d078f7afacae72fdf79.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv5LqU5YWD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center在这里插入图片描述

3.负载均衡

(1)为什么要使用负载均衡

当一台服务器的单位时间内访问量越大的时候,服务器压力会越大,当一台服务器压力大得超过自身的承受压力的时候,服务器会崩溃。

为了避免服务器崩溃,让用户更好的体验,我们通常通过负载均衡的方式来分担服务器的压力。

(2)几种负载均衡的方式

1)、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、weight权重

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

3)、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4)、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

5)、url_hash(第三方)

单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先

请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服

务器,也就是我们所说的负载均衡

在这里插入图片描述

4.动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析

速度。降低原来单个服务器的压力。

在这里插入图片描述

5.nginx配置文件

1)第一部分: 全局块
从配置文件开始到events 块之间的内容,主要会设置一些影响 nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组)、允许生成的worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。

worker processes  1;

这是Nginx服务器并发处理服务的关键配置, worker processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约+

2)第二部分: events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多work process

下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个wordprocess可以同时支持的最大连接数等。
上述例子就表示每个work process支持的最大连接数为1024.
这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置。

3)第三部分: http块
这算是Nginx服务器配置中最频繁的部分,代理、 缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是: http块也可以包括http全局块、server 块。

Nginx常用命令

进入nginx目录中

cd /usr/local/nginx/sbin

1、查看nginx版本号。
./nginx -v

2、启动nginx

./nginx

3、停止nginx

./nginx -s stop

4、重新加载nginx.

./nginx -s reload

Nginx配置实例-反向代理实例1

1、实现效果
(1)打开浏览器,在浏览器地址栏输入地址www.123.com, 跳转到liunx系统tomcat主页面中。

2、准备工作
(1)在liunx系统安装tomcat, 使用默认端口80804
* tomcat安装文件放到liunx系统中,解压。
*进入tomcat的bin目录中,./startup.sh启动tomcat服务器

(2)对外开放访问的端口。
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
查看已经开放的端口号
firewall-cmd --list-all

3、访问过程分析
在这里插入图片描述
4、具体配置

第一步 在windows 系统的host文件进行域名和ip对应关系的配置
在这里插入图片描述
(1)添加内容在host文件中

在这里插入图片描述

第二步 在nginx进行请求转发的配置(反向代理)
在这里插入图片描述
5、最终测试
在这里插入图片描述

Nginx配置实例-反向代理实例2

1、实现效果
使用 nginx反向代理,根据访问的路径跳转到不同端口的服务中
nginx监听端口为9001,
访问http://192.168.17.129:9001/edu/ 直接跳转到127.0.0.1:8080

访问http://192.168.17.129:9001/vod/ 直接跳转到127.0.0.1:8081

2、准备工作。
(1)准备两个tomcat服务器,一个8080端口,一个8081端口
(2)创建文件夹和测试页面

3、具体配置
(1)找到nginx配置文件,进行反向代理配置。
在这里插入图片描述
(2)开放对外访问的端口号9001 8080 8081

location指令说明

1、= :用于不含正则表达式的uri前,要求请求字符串与uri 严格匹配,如果匹配
成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示uri包含正则表达式,并且区分大小写。。
3、~*: 用于表示uri包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri前,要求Nginx服务器找到标识uri和请求字
符串匹配度最高的location 后,p立即使用此location 处理请求,而不再使用location
块中的正则uri和请求字符串做匹配。

注意:如果uri 包含正则表达式,则必须要有~或者 ~* 标识。

Nginx配置实例-负载均衡

1、实现效果

(1)浏览器地址栏输入地址http://192.168.17.129/edu/a.html, 负载均衡效果,平均8080和8081端口中,

2、准备工作。

(1)准备两台tomcat服务器,一 台8080, 一台 8081

(2)在两台tomcat里面webapps目录中,创建名称是edu文件夹,在edu文件夹中创建页面a.html,用于测试

3、在nginx的配置文件中进行负载均衡的配置

在这里插入图片描述

在这里插入图片描述

1、轮询(默认)

每个请求按时间顺序逐一分配到不 同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight(权重)

weight代表权,重默认为1,权重越高被分配的客户端越多。

指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。例如:

upstream server_pool {
server 192.168.5.21 weight=10;
server 192.168.5.22 weight=10;
}

3、ip_hash

每个请求按访问ip.的hash结果分配,这样每个访客固定访问一一个后端服务器可以解诀session的问题。例如:

upstream server_pool {
ip_hash
server 192.168.5.21:80;
server 192.168.5.22:80;
}

4、fair (第三方)

按后端,服务器的响应时间来分配请求,响应时间短的优先分配。

upstream server_pool {
server 192.168.5.21:80;
server 192.168.5.22:80;
fair
}

Nginx动静分离

1、什么是动静分离

动态请求就是访问Tomcat

静态请求就是访问静态资源

在这里插入图片描述

通过location指定不同的后缀名实现不同的请求转发。通过expires 参数设置,可以使浏

览器缓存过期时间,减少与服务器之前的请求和流量。具体Expires 定义:是给一个资源

设定个过期时间, 也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,

所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,

不建议使用Expires 来缓存),我这里设置3d,表示在这3天之内访问这个URL,发送一个请求,

比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,

如果有修改,则直接从服务器重新下载,返回状态码200。

2、准备工作

(1)在liunx系统中准备静态资源,用于进行访问

在这里插入图片描述

3、具体配置

(1)在nginx配置文件中进行配置

在这里插入图片描述

4、最终测试,

(1)浏览器中输入地址。

http://192.168.17.129/image/01.jpg

为什么访问后是这个样子?

  • 因为配置文件里 配置了 autoindex on

在这里插入图片描述

(2)在浏览器地址栏输入地址。

[http://192.168.17. 129/www/a.htm](http://192.168.17. 129/www/a.htm/)l

在这里插入图片描述

Nginx配置高可用

1、什么是nginx高可用

在这里插入图片描述

(1)需要两台nginx服务器

(2)需要keepalived

(3)需要虚拟ip.

2、配置高可用的准备工作。

(1)需要两台服务器192.168.17.129 和192.168.17.131

(2)在两合服务器安装nginx.

(3)在两合服务器安装keepalived

3、在两台服务器安装keepalived

(1)使用yum命令进行安装 yum install keepalived -y

(2)安装之后,在etc里面生成目录keepalived, 有文件keepalived.conf.

4、完成高可用配置(主从配置)

(1)修改/etc/keepalived/keepalivec.conf 配置文件.

global_defs {   # 全局配置
notification_email {
acassen@firewall.loc
failover @firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewal.loce
smtp_server 192.168.17.129
smtp_connect_timeout 30
router_id LVS_DEVEL  # 访问到主机
}
vrrp_script_chk_http_port { # 脚本配置
	script "/usr/local/src/nginx_check.sh"
	interval  2   # 检测脚本执行的间隔)
	weight  -20   # 权重
}

vrrp_instance VI_1 {
	state BACKUP  # 备份服务器上将MASTER 改为 BACKUP
	interface ens33 //网卡
	virtual_router_id 51 # 主、备机的virtual_router_id必须相同
	priority 90  # 主、备机取不同的优先级,主机值较大,备份机值较小
	advert int 1  # 检测心跳的 时间 每隔一秒
	authentication { # 权限校验的方式
	auth_type PASS
	auth_pass 1111
}
virtual_ipaddress {
	192.168.17.50 // VRRP H 虚拟地址
	}
}

(2) 在/usr/local/src添加检测脚本

#!/bin/bash
A=`ps -C nginx -no-header |wc -1`
if[$A -eq 0];then	
	/usr/local/nginx/sbin/nginx
	sleep 2
	if [ `ps -C nginx --no-header |wc -1` -eq 0 ];then
		killall keepalived
	fi
fi

(3)把两合服务器上nginx和keepalived启动

启动nginx: ./nginx


virtual_router_id 51 # 主、备机的virtual_router_id必须相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert int 1 # 检测心跳的 时间 每隔一秒
authentication { # 权限校验的方式
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟地址
}
}




(2) 在/usr/local/src添加检测脚本

```plain
#!/bin/bash
A=`ps -C nginx -no-header |wc -1`
if[$A -eq 0];then	
	/usr/local/nginx/sbin/nginx
	sleep 2
	if [ `ps -C nginx --no-header |wc -1` -eq 0 ];then
		killall keepalived
	fi
fi

(3)把两合服务器上nginx和keepalived启动

启动nginx: ./nginx

启动keepalived: systemctl start keepalived.service

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值