Nginx技术介绍
Posted love the future
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx技术介绍相关的知识,希望对你有一定的参考价值。
文章目录
1.Web服务器
目前最主流的三个Web服务器是Apache、nginx、 IIS。
web的简介
- Web服务器也称为WWW(WORLD WIDE WEB)服务器,即网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
-
- 1、服务器是一种被动程序:只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应。
-
- 2.最常用的Web服务器是Apache和Microsoft的Internet信息服务器(Internet Information Services,IIS)。
-
- 3.Internet上的服务器也称为Web服务器,是一台在Internet上具有独立IP地址的计算机,可以向Internet上的客户机提供WWW、Email和FTP等各种Internet服务。
-
- 4.Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。
-
- 5.服务器使用HTTP(超文本传输协议)与客户机浏览器进行信息交流,这就是人们常把它们称为HTTP服务器的原因。Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
Web服务器和应用服务器的区别
-
Web服务器与客户端打交道,它要处理的主要信息有:session、request、response、html等。
-
Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response)
-
Web服务器只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(服务器端脚本)。
-
Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能
-
应用服务器通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就像你调用对象的一个方法(或过程 语言中的一个函数)一样。
-
应用服务器处理业务逻辑,web服务器则主要是让客户可以通过浏览器进行访问,处理HTML文件,web服务器通常比应用服务器简单。
-
Web服务器:Apache、IIS、Nginx(也是反向代理服务器)
-
应用服务器:Tomcat、Weblogic、Jboss
2.代理
说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;
2.1正向代理
是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。(即正向代理在客户端使用)
这个正向代理服务器是在我们的用户浏览器端设置的(并不是在远端的服务器设置)。最后将结果按照原路进行返回。
一般在客户端设置正向代理服务器,需要知道正向代理服务器的IP地址,还有代理程序的端口。
正向代理的用途:
- (1)访问一些网站
- (2) 可以做缓存,加速访问资源
- (3)对客户端访问授权,上网进行认证
- (4)代理可以记录用户访问记录,对外隐藏用户信息
2.2 反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
反向代理是作用在服务器端的,是一个虚拟ip(VIP)。对于用户的一个请求,会转发到多个后端处理器中的一台来处理该具体请求。
- 客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
- 反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
- 反向代理的作用:
-
- (1)保证服务器安全。
-
- (2)负载均衡,通过反向代理服务器来优化网站的负载
-
- (3)动静分离:可以将静态资源和动态资源分配给不同的服务器。
- (3)动静分离:可以将静态资源和动态资源分配给不同的服务器。
3. Nginx介绍
3.1 什么是Nginx?
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
3.2 为什么要使用Nginx?
- 在传统的Web项目中,并发量小,用户使用的少。所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。
-
- 用户访问<------->Tomcat服务器
- 而在互联网项目下,因单个tomcat默认并发量有限制。如果请求量过大,会产生如下问题:因此就无法让更多的用户直接访问Tomcat服务器。
-
Tomcat8 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。 具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。 操作系统对于进程中的线程数有一定的限制: Windows 每个进程中的线程数不允许超过 2000 Linux 每个进程中的线程数不允许超过 1000 (在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。) Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。 maxThreads="150" 最大并发数 minSpareThreads="10"///初始化时创建的线程数 maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
3.3Nginx的特点:
高并发
通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。
- 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
- 吞吐量:单位时间内处理的请求数量。
- QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。
- 并发用户数:同时承载正常使用系统功能的用户数量。
高可用
通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
高性能
是指服务响应时间快,(CPU/处理器/内存)特别是在高并发下响应时间不会急剧增加。
3.4 Nginx的安装
1.到nginx官网下载软件:http://nginx.org/
2.在安装nginx之前,需要先安装一些依赖:pcre依赖,openssl,zlib,gcc依赖.
- 1.在linux系统中,进入/usr/src执行下面命令。
-
- wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre 8.37.tar.gz
-
- 解压压缩文件,在当前目录下,使用命令 tar xvf pcre 8.37.tar.gz
-
- 进入到解压之后的pcre 8.37文件中,执行./configure
-
- 安装pcre,在当前目录下执行:make && make install
-
- 可以通过命令:pcre-config --version ,查看安装的版本
- 2.安装openssl,zlib,gcc依赖
-
- 直接在pcre 8.37目录下执行yum y install make zlib zlib devel gcc c++ libtool openssl openssl devel
- 3.安装nginx
-
- 回到目录/usr/src下,将下载的nginx压缩文件nginx-1.21.6.tar.gz上传到该目录。
-
- 解压,执行 tar xvf nginx-1.21.6.tar.gz
-
- 进入解压之后的文件 nginx-1.21.6:执行./configure
-
- 最后执行 make && make install
- 4.启动服务
-
- 进入目录 /usr/local/nginx/sbin/启动服务:./nginx
- 5.在/usr/local/nginx/conf/目录下有一个nginx.conf的配置文件。其中有一个默认监听的端口号。
但是在window系统中访问linux中的nginx,默认是不能访问的,可以关闭防火墙或者是设置开放访问端口号:即80端口。
查看开放的端口号:firewall cmd list all
设置开放的端口号
firewall cmd add service=http permanent
firewall cmd add port=80/tcp permanent
重启防火墙:firewall cmd reload
再通过IP地址就可以成功访问到nginx,代表Nginx服务器正常启动。
- 6.nginx的常用命令
-
- 进入 nginx 目录中: cd /usr/local/ng inx/sbin
-
- 查看 nginx 版本号: ./nginx v
-
- 启动 nginx :./nginx
-
- 停止 nginx : ./nginx s stop
-
- 重新加载 nginx :./nginx s reload
3. Nginx的配置文件:
配置文件的位置:cd /usr/local/nginx/conf/nginx.conf
配置文件中的内容
包含三部分内容
(1 )全局块:配置服务器整体运行的配置指令。比如 worker_processes 1; 处理并发数的配置
(2)events 块 :影响 Nginx 服务器与用户的网络连接。比如 worker_connections 1024; 支持的最大连接数为 1024
(3)http 块还包含两部分:http 全局块、server 块
4.Nginx配置反向代理
例如:使用反向代理,根据访问的路径跳转到不同端口的服务中,假定nginx监听的端口号是9001,则:
访问 http:// 192.168.17.129 :9001/edu/ 直接跳转到 127.0.0.1:808 0
访问 http:// 192.168.17.129 :9001/vod/ 直接跳转到 127.0.0.1:808 1
即如下图效果:
1.需要准备两个Tomcat服务器,一个8080端口,一个8081端口。
2. 创建文件夹和相应的测试页面
3. 修改Nginx的配置文件,
(1)进行反向代理配置。
(2)开放对外访问端口号:9001 、8080、 8081
5.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 的配置文件中进行负载均衡的配置
4 、 nginx 分配服务器策略
- 第一种 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。 - 第二种 weight
weigh t 代表权重默认为 1, 权重越高被分配的客户端越多 - 第三种 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器 - 第四种 fair (第三方 )
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
Nginx实现动静分离
以上是关于Nginx技术介绍的主要内容,如果未能解决你的问题,请参考以下文章