公司动态
Nginx的基本概念(由浅入深)
1、nginx基本概念(1)nginx是什么做什么事情。Nginx(engine x”)是一个高性能的HTTP和反向代理服务器特点是占有内存少并发能力强事实上nginx的并发能力确实在同类型的网页服务器中表现较好。Nginx专为性能优化而开发性能是其最重要的考量实现上非常注重效率能经受高负载的考验有报告表明能支持高达 50,000个并发连接数。nginx支持热部署(2)反向代理1.正向代理在客户端浏览器配置代理服务器通过 代理服务器进行互联网访问。2.反向代理我们只需要将请求发送到反向代理服务器由反向代理服务器去选择目标服务器获取数据后在返回给客户端此时反向代理服务器和目标服务器对外就是一个服务器暴露的是代理服务器地址端口为9001的隐藏了真实服务器IP地址端口为8001。3.负载均衡单个服务器解决不了我们增加服务器的数量然后将请求分发到各个服务器上将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上将负载分发到不同的服务器也就是我们所说的负载均衡4.动静分离为了加快网站的解析速度可以把动态页面和静态页面由不同的服务器来解析分开部署加快解析速度。降低原来个服务器的压力。动静分离之前动静分离之后2、nginx安装、常用命令和配置文件。(1)在liunx系统中安装nginx1.使用远程的连接工具连接linux系统nginx安装之前相关的素材依赖(1)安装pcre依赖把安装压缩文件放到linux系统中.解压压缩文件tar -xvf pcre-8.37.tar-gz进入解压之后目录执行./configure使用make make install安装之后使用命令查看版本号pcre-config --verison.(2安装其他的依赖yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel3安装nginx(1)把nginx安装文件放到linux系统中.(2)解压压缩文件(3)进入解压之后目录执行configure(4) 使用 make make install安装成功之后在usr多出来一个文件夹local/nginx在nginx有sbin有启动脚本防火墙端口规则查看开放的端口号firewall-cmd--list-all.设置开放的端口号firewall-cmd--add-servipe-http -permanent增加其他端口号 sudo firewall-cmd -add-port80/tcp --permanent重启防火墙firewall-cmd -reload(2)nginx常用命令1.使用nginx操作命令前提条件必须进入nginx的目录/user/local/nginx/sbin2.查看nginx的版本号./nginx -v3.启动nginx./nginx4.关闭nginx./nginx -s stop5.重新加载nginx./nginx -s reload(3)nginx配置文件1.nginx配置文件位置在user/local/nginx/conf/nginx.conf2.nginx配置文件组成1nginx配置文件有三部分组成第一部分全局块从配置文件开始到events 块之间的内容主要会设置一些影响nginx 服务器公运了的令比如worker processes 1;worker_processes 值越大可以支持的井发处理量也越多第二部分events块events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接比如 worker_connections1024;支持的最大连接数第三部分http块nginx服务器配置中最频繁的部分需要注意的是:http块可以包括http全局块、server块http全局块http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。.server块这块和虚拟主机有密切关系虚拟主机从用户角度看和一台独立的硬件主机是完全一样的该技术的产生是为了节省互联网服务器硬件成本。每个http块可以包括多个服务器块而每个服务器块就相当于一个虚拟主机。而每个服务器块也分为全局服务器块以及可以同时包含多个位置块。1、全局server块最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。·2、 location块一个服务器块可以配置多个位置块。这块的主要作用是基于Nginx服务器接收到的请求字符串(例如 server_name/uri-string)对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配对特定的请求进行处理.地址定向、数据缓存和应答控制等功能还有许多第三方模块的配置也在这里进行。3、nginx的配置示例1.1-反向代理1.实现效果(1)打开浏览器在浏览器地址栏输入地址www.123.com,跳转iunx系统tomcat主页面2.中2.准备工作(1)在liunx系统安装tomcat使用默认端口8080tomcat安装文件放到liunx系统中解压.进入tomcat的bin目录中./startup.sh启动tomcat服务器(2)对外开放访问的端口.firewall-cmd --add-port8080/tcp --permanent(以8080为例)firewall-cmd -reload重启防火墙查看已经开放的端口号firewall-cmd --list-all(3)在 windows系统中通过浏览器访问tomcat服务器.3.访问过程的分析4.具体配置第一步在windows 系统的host文件进行域名和ip对应关系的配置.添加内容再host文件中第二步在nginx进行请求转发的配置反向代理配置4、nginx的配置示例1.2-反向代理1、实现效果使用nginx反向代理根据访问的路径跳转到不同端口的服务中nginx监听端口为9001访问 http://127.0.0.1:9001/edu/直接跳转到127.0.0.1:8081访问 http://127.0.0.1:9001/vod/直接跳转到127.0.0.1:8082.2.准备工作(1)准备两个tomcat服务器一个8080端口一个8081端口.(2)创建文件夹和测试页面在两个短口的此路径下建vod 和edu文件夹 分别放入不同的页面我放的是8080 和80813.具体配置1找到nginx配置文件进行反向代理配置如果路径中包含edu就到8080端口中去如果路径中包含vod就到8081端口中去2开放对外访问的端口号 9001 8080 80814.测试location指令该指令用于匹配URL语法5、nginx的配置示例2-负载均衡1.实现效果(1)浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果平均8080和8081端口中2.准备工作1准备两台或者多台tomcat服务器一台8080一台80812在两台tomcat里面webapps目录中创建名称是edu文件夹两个都是edu名称在文件夹中创建a.html页面用于测试3.在nginx.conf的配置中设置负载均衡4.nginx分配服务器的策略第一种轮询默认每个请求按时间顺序逐一分配到不同的后端服务器如果后端服务器down掉能自动剔除。第二种weight权重策略默认为1权重越高分配的客户端越多第三种ip_hash每个请求按访问ip的hash结果分配这样每个访客國定访问一个后端服务器第一次访问的是 8080 的服务器 后面越是8080的服务器可以解决session共享的问题第四种fair第三方按后端服务器的响应时间分配响应时间短的优先分配5、nginx的配置示例3-动静分离1.什么是动静分离Nginx 动静分离简单来说就是把动态跟静态请求分开不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开可以理解成使用Nginx处理静态页面Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种种是纯粹把静态文件独立成单独的域名放在独立的服务器上也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起发布通过 nginx来分开。通过 location 指定不同的后缀名实现不同的请求转发。通过 expires参数设置可以使浏览器缓存过期时间减少与服务器之前的请求和流量。具体Expires 定义:是给一个资源设定一个过期时间也就是说无需去服务端验证直接通过浏览器自身确认是否过期即可所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件不建议使用Expires 来缓存)我这里设置 3d表示在这3天之内访问这个URL发送个请求比对服务器该文件最后更新时间没有变化则不会从服务器抓取返回状态码 304如果有修改则直接从服务器重新下载返回状态码 200。2.准备工作1在liunx系统中准备静态资源用于进行访问3.具体配置在nginx.conf配置文件中配置 然后重启文件4.最终测试1在浏览器中输入地址因为配置文件autoindex on表示列出文件夹的位置2在浏览器中输入地址6、nginx配置高可用集群1.什么是nginx的高可用若一台nginx宕机则不能运行所以用 高可用弄一个主nginx和一个备份nginx1需要两台nginx服务器2需要keepalived3需要虚拟ip2.配置高可用的准备工作1需要两台nginx服务器192.168.17.129和192.168.17.131根据自己的虚拟机弄ip2在两台服务器中安装nginx3在两台服务器中安装keepalived先安装需要的依赖根据上面 安装nginx的步骤完成3.在两台服务器中安装keepalived1使用yum命令进行安装yum install keepalived -y 安装命令rpm -q -a keepalived 查看安装版本2安装之后在etc里面生成目录 keepalived 有个keepalived.conf配置文件4.完成高可用配置主从配置1修改/etc/keepalived/keepalivec.conf配置文件.2/usr/local/src添加检测脚本3把两台服务器中的nginx和keepalived启动启动nginx:./nginx启动keepalived:systemctl start keepalived.service此路径下启动5.最终测试1在浏览器地址栏中输入虚拟ip地址 192.168.17.502把主服务器192.168.17.129nginx和keepalived停止在输入地址7、nginx执行原理1.master进程 和worker进程2.worker是如何进行工作的3.一个master和多个worker有什么好处1可以使用nginx -s reload热部署命令利于nginx热部署操作2每个worker是独立的进程如果其中的一个worker出现问题其他worker独立的继续进行争抢实现请求过程不会造成服务中断4.设置多少个worker才合适worker数和服务器的cpu数相等是最为适宜的5.连接数 worker_connection第一个:发送请求占用了worker的几个连接数答案2或者4个第二个nginx有一个master有四个worker每个worker支持最大的连接数据1024支持的最大并发数是多少答案普通的静态访问最大并发数是:worker_connections*worker_processes /2,而如果是HTTP作 为反向代理来说最大并发数量应该是 worker_connectionsworker_processes/4