nginx 基础篇 + 实战篇,带你进入快车道
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了nginx 基础篇 + 实战篇,带你进入快车道,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10648字,纯文字阅读大概需要16分钟。
内容图文
![nginx 基础篇 + 实战篇,带你进入快车道](/upload/InfoBanner/zyjiaocheng/932/8902788a26a046c3bc3621dae7ca5b31.jpg)
nginx 基础篇 + 实战篇
文章目录
前言
基础篇 + 实战篇 主要内容介绍
1.nginx的基本概念
(1)nginx是什么,及作用
(2)反向代理
(3)负载均衡
(4)动静分离
(5)高可用集群
2.nginx安装、常用命令和配置文件
(1)在liunx系统中安装nginx
(2)nginx常用命令
(3)nginx配置文件
3.nginx实战篇
(1)nginx配置示例1.-反向代理
(2)nginx配置示例2.-负载均衡
(3)nginx配置示例3.-动静分离
(4)nginx配置示例4.-高可用集群
4.nginx原理
一、nginx的基本概念
1.nginx是什么
nginx是一个高性能的http和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现比较好;
nginx专为性能优化而开发,性能是其中最重要的考量,实现上非常注重效率,能经受住高负载的考验,有报告表明能支持高达50000个并发连接数。
2.nginx的作用
可以做反向代理,负载均衡,动静分离,高可用集群;
(1)反向代理。
反向代理 vs 正向代理
正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
反向代理:我们只需要将请求发生送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是服务器地址,隐藏了真实服务器ip地址。
(2)负载均衡。
单一的,普通的,请求比较少的情况;
负载均衡:单个服务器解决不了,我们增加服务器数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器的情况改为分发到多个服务器上,将负载分发到不同服务器,也就是我们所说的负载均衡。
(3)动静分离。
动静不分离情况下,单服务部署所有的内容
动静分离:为了加快网站解析速度,可以把动态网页和静态网页由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
(4)高可用集群。
情景:当nginx宕机之后…
一般情况下:
高可用:当nginx主服务器宕机之后,系统依然可以正常完成整个请求的过程。
二、nginx安装、常用命令和配置文件
1.安装
1.1 进入 nginx 官网,下载nginx包
1.2安装 nginx
(1)安装 pcre
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
解压文件,
./configure 完成后,回到 pcre 目录下执行
再make && make install
(2)安装 openssl
(3)安装 zlib
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
前三步骤为安装nginx的前提(环境)
(4)安装 nginx
解压缩 nginx-xx.tar.gz 包。
进入解压缩目录,执行./configure。
make && make install
(5)查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd --add-service=http –permanent
sudo firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd –reload
2.常用命令
使用nginx操作命令前提条件:必须进入nginx的目录中/usr/local/nginx/sbin。
(1)查看nginx版本号 ./nginx -v
(2)启动命令
在/usr/local/nginx/sbin 目录下执行 ./nginx
(3)关闭命令
在/usr/local/nginx/sbin 目录下执行 ./nginx -s stop
(4)重新加载命令
在/usr/local/nginx/sbin 目录下执行 ./nginx -s reload
(5)验证nginx配置文件是否正确 ./nginx -t
3.配置文件
(1)nginx配置文件的位置
/usr/local/nginx/conf下的nginx.conf文件中
(2)nginx配置文件的组成
nginx的配置文件由三部分组成
? 第一部分:全局块
? 从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的 配置指令。主要包括配置运行nginx服务器的用户(组),允许生成的worker_process数,进程 PID存放路径,日志存放路径和类型以及配置文件的引入等。
? 比如第一行配置的:worker_process 1;这是nginx服务器并发处理服务的关键配置, worker_process值越大,可以支持的并发数量也就越多,但是会受到硬件、软件等设备 的影响。
? 第二部分:events块
? events块涉及的指令主要影响nginx服务器与用户的网络连接。常用的设置包括:是否 开启对多worker_process下的网络连接进行序列化,是否允许同时接受多个网络连接,选取 那种事件驱动模型来处理连接请求,每个worker_process可以同时支持的最大连接数等。
? 比如events{worker_connections 1024};表示每个worker_process支持的最大连接 数为1024。
? 这部分配置对nginx的性能影响较大,在实际中应该灵活配置。
? 第三部分:http块
? nginx服务器配置中最频繁的部分。代理、缓存和日志定义等绝大多数功能和第三方模 块的配置都在这里。比如:反向代理,负载均衡,动静分离,高可用都在此配置。
? 注意:HTTP块又包括http全局块、server块
? 1. http全局块
? http全局块配置的指令包括:文件引入、MIME-TYPE定义、日志自定义、连接超时 时间、单链接请求数上限等。
? 2. server块
? 这块和虚拟主机有密切关系。虚拟主机从用户角度看:和一台独立的硬件主机是完全 一样的,该技术的产生是为了节省互联网服务器硬件成本。(后面例子都在此配置)
? 每个HTTP块可以包括多个server块,而每个server块就相当于一个虚拟主机。
? 而每个server块也分为:全局server块,以及可以同时包含多个location块。
? ①全局server块
? 最常见的配置是:虚拟机主机的监听配置和本虚拟主机的名称或ip配置。
? ②location块
? 一个server块可以配置多个location块。
? 这块的主要作用是:基于nginx服务器接收到的请求字符串(例如server_name/uri- string),对虚拟主机名称(也可以是ip别名)之外的字符串(例如 前面server_name/uri- string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能, 还有许多第三方模块的配置也在这里进行。
三、nginx实战篇
(1)nginx配置示例1.-反向代理
(2)nginx配置示例2.-负载均衡
(3)nginx配置示例3.-动静分离
(4)nginx配置示例4.-高可用集群
1.反向代理
(1)反向代理一
1.1实现效果
打开浏览器,在浏览器的地址栏中输入一个地址www.lyt.com,跳转到Linux系统的tomcat主页面中
1.2准备工作
在Linux下安装tomcat,使用默认端口8080
(1)将tomcat安装文件放到Linux系统中,解压
(2)进入tomcat的bin目录中,./startup.sh启动Tomcat服务器
查看开放的端口号:firewall-cmd --list-all
设置开放的端口号:firewall-cmd --add-port=8080/tcp --permanent
重启防火墙:firewall-cmd --reload
1.3访问过程分析
1.4具体配置
(1)在Windows系统的host文件进行域名和ip对应关系的配置
配置详情
(2)在nginx中进行请求转发的配置(反向代理配置)
当访问192.168.187.11:80就会转发到127.0.0.1:8080。
1.5最终的测试
cd /usr/local/sbin执行./nginx开始nginx服务,到Windows下进行测试。效果如下:
(2)反向代理二
1.实现效果
使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听的端口为9001
访问http://192.168.187.11:9001/edu/ 直接跳转到127.0.0.1:8080
访问http://192.168.187.11:9001/vod/ 直接跳转到127.0.0.1:8081
2.准备工作
(1)准备两个tomcat服务器,一个8080端口,一个8081端口。(复制两份放到两个文件夹中,分别启动,将其中一个端口修改为8081)
修改端口: 到文件tomcat/conf/server.xml中修改:
(2)创建文件夹和测试页面
在两台tomcat里面webapps目录中,创建edu,vod文件夹,在edu,vod文件夹中创建页面a.html,用于测试
3.具体配置
(1)找到nginx配置文件,进行反向代理的配置
(2)开放对外访问的端口号9001 8080 8081
4.最终测试
注:location指令说明
该指令用于匹配URL。
语法如下:
2.负载均衡
1.实现效果
浏览器地址栏输入地址http://192.168.187.11/edu/a.html,实现负载均衡效果,将请求平均分发到8081和8082端口中
2.准备工作
(1)准备两台tomcat服务器,一台8081,一台8082
(2)在两台tomcat里面webapps目录中,创建edu文件夹,在edu文件夹中创建页面a.html,用于测试
3.在nginx的配置文件中进行负载均衡的配置
(1)在http块中加上upstream 服务名{列出负载均衡tomcat服务器的列表}
配置详情请点击
(2)在server里加上规则server_name改为我们的ip,location中加上起的服务名
随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx就是其中的一个,在Linux下有nginx、lvs、haproxy等等服务可以提供负载均衡服务,而且nginx提供了几种分配方式(策略):
1.轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
2.weight
weight代表权重,默认为1,权重越高被分配的客户端越多
upstream server_name{
server 192.168.187.11:8081 weight=5;
server 192.168.187.11:8082 weight=10;
}
3.ip_hash
每个请求按访问ip的hash结果分配,这样每个访客(ip)固定访问一个后端服务器,可以解决session问题,例如:
upstream server_name{
ip_hash;
server 192.168.187.11:8081;
server 192.168.187.11:8082;
}
4.fail(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
upsrteam server_name{
server 192.168.187.11:8081;
server 192.168.187.11:8082;
fair;
}
3.动静分离
Nginx动静分离简单的说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离,可以理解为用Nginx处理静态页面,Tomcat处理动态页面。
动静分离实现大致可以分为两种:
(1)一种是把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推荐的方案
(2)另一种是动态跟静态文件混合在一起,通过Nginx来分开
通过location指定不同的后缀名实现不同的请求转发,通过expire是参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体Expire定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量,它适合不经常变动的资源。如设置3d,表示在3天之内访问这个url,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器从新下载,返回状态码200
(3)配置实例
输入测试地址:http://192.168.17.129/www/a.html,http://192.168.17.129/image/01.jpg就可访问到相应的静态资源
4.高可用集群
(1)当只有一台Nginx服务器时,客服端访问的Nginx挂掉就无法正常访问,这是配置高可用就可以解决该问题,此时就需要配置两台Nginx服务器,一台是主服务器MASTER,一台是备用服务器BACKUP,我们对外的虚拟ip192.168.17.50首先访问的是nginx1,当nginx1挂掉还可以访问nginx2来访问;配置高可用需要两台Nginx服务器、keepalived、虚拟ip。
(2)配置实例
关键点:脚本执行;主副服务器配置;虚拟ip配置
脚本执行配置:
主副服务器配置 及 虚拟ip配置:
四、nginx原理
1.master 和 worker
2.worker如何进行工作的流程
worker如何进行工作的流程(请求先到nginx中的master(管理员),master把任务给worker,worker通过争抢机制得到任务,worker可以进行反向代理用tomcat完成具体操作 )
3.一个master 和 多个worker有哪些好处
(1)有利于我们nginx -s reload热部署操作
(2)每个worker是独立的进程,如果有其中一个worker出现问题,其他worker独立的,继续进行争抢,实现请求过程,不会造成服务中断。
4.设置多少个worker才合适
nginx同Redis类似都采用io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程,通过异步阻塞的方式来处理请求,即使是成千上万个请求也不再话下。每个worker的线程可以把一个cpu的性能发挥到极致。所以worker数和服务器的cpu数相等最为适宜。设少了会浪费cpu,设多了会造成cpu频繁切换上下文带来的损耗。
5.连接数worker_connection
(1)发送请求,占用了worker的几个连接数?
2或者4个
(2)nginx有一个master,有四个worker,每个worker支持最大的连接数1024,支持的最大并发数是多少?
普通的静态访问最大并发数是:worker_connectionsworker_processes(worker数量)/2
如果是http作为反向代理来说,最大并发数量应该是:worker_connectionsworker_processes(worker数量)/4
总结
nginx基础 + 实战
参考文章
https://www.cnblogs.com/knowledgesea/p/5199046.html
https://www.cnblogs.com/crazylqy/p/6891929.html
https://blog.csdn.net/duguyuyun12345/article/details/83471821
在此基础上梳理并添加部分内容,站在巨人的肩膀上做的自我整理~~~。
内容总结
以上是互联网集市为您收集整理的nginx 基础篇 + 实战篇,带你进入快车道全部内容,希望文章能够帮你解决nginx 基础篇 + 实战篇,带你进入快车道所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。