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. 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实现动静分离

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值