NGINX详解

NGINX详解

基本概念

NGINX:Nginx是一个高性能的HTTP和反向代理web服务器,是一款轻量级的Web服务器/反向代理服务器及电子邮件代理服务器,其特点是占有内存少,并并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,典型的就是BAT(tomcat最大并发为200,实际只有150;nginx并发量为50000)

**正向代理:**一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指向目标(原始服务器)然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理

为什么不直接访问互联网而需要使用正向代理?

​ 答案:正向代理的典型用途是为了在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率

速记:正向代理是要是客户端配置的代理,侧重的是客户端通过代理解决问题,例如过滤资源、隐藏客户端ip等(我客户端想做我想做的事情,主要以客户端)

**反向代理:**反向代理服务器位于用户于目标之间,但是对于用户而言,反向代理服务就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无需在用户端做任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。反向代理其实客户端是无感知的,因为客户端不需要任何配置就可以访问。我们只需要将请求送到反向代理服务器,有反向代理服务器去选择目标服务器获取数据后,返回给客户端,此时反向代理服务器和目标服务器就是一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器ip地址。

​ 典型的应用就是nacos集群或gateway集群,需要使用反向代理进行负载均衡

速记:反向代理主要是服务器配置代理,侧重的是通过反向代理实现负载均衡和隐藏服务器真实访问地址等。

**负载均衡服务:**其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其他关键任务服务器等,从而共同完成工作任务。

客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。

这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成本也低。但随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接奔溃。很明显这是由于服务器性能的瓶颈造成的问题,解决这种情况:我们首先想到的可能是升级服务器的配置,比如提高cpu执行效率,加大内存等提高机器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能满足日益提升的需求了。最明显的一个例子,双十一当天,某个热销商品的瞬时访问量是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,,都是不能够满足需求的,既然纵向解决问题的办法行不通,那么横向增加服务器数量呢?这时候集群的概念就产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分别发到各个服务器上,将原先请求集中到单个服务器上的情况改为请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡(当服务器性能差距较大时,我们还可以分配权重使性能较好的服务器多处理,性能较差的服务器少处理减轻压力)

**动静分离:**是指在Web服务器架构中,将静态页面(html页面,css样式,图片等)与动态页面(jsp页面,java代码等)或者静态内容接口和动态内容接口分开不懂系统访问的架构设计方法,进而提升整个服务访问性能和可维护性

Linux下安装nginx

**准备工作:**执行:yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

安装nginx前需要确保linux上安装了gcc,PCRE,zlib,OpenSSL

​ 1.安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境

​ 2.PCRE(Perl Compatible Regular Expressions) 是一个Per库,包括 perl 兼容的正则表达式库。nginx的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pc 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库.

​ 3.zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 entos 上安装 lib 库。

​ 4.0penSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密银和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装OpenssL库.

安装nginx:

​ 1.将nginx安装包上传到opt目录下

​ 2.解压到当前文件夹,命令为: tar -zxvf nginx-1.22.0.tar.gz

​ 3.配置当前nginx,命令为: ./configure 这里其实也是执行nginx下的configure 文件(需在解压完的nginx-1.22.0目录下)

​ 4.执行命令: make && make insta11

拓展:/configure配最)、make(编译)、make install(安装)这三个命令,我们可以用8&来把命令连接起来执行,表示当前一条命令正常结束后,后面的命令才会执行,这个办法很好,既节省时间,又可以防止发生错误。例:
./configure && make && make install

注意:运行nginx之前请先配置防火墙

配置防火墙

(1) 设置开机启用防火墙: systemctl enable firewal1d.service
(2) 设置开机禁用防火墙: systemctl disable firewa11d.service
(3) 启动防火墙: systemctl start firewa11d
(4)天闭防火墙: systemctl stop firewa11d
(5) 检查防火墙状态: systemctl status firewa11d


(1) 查看防火墙状态: firewa11-cmd --state
(2) 重新加载配置: firewa17-cmd --reload
(3) 查看开放的端口: firewa11-cmd --list-ports
(4) 开启防火墙端口: firewa11-cmd --zone=public–add-port=9200/tcp --add-port=8080/tcp --permanent

(5)关闭端口命令: firewal1-cmd --zone= public --remove-port=80/tcp --permanent

(6)查看端口是否打开: firewa11-cmd --zone= public --query-port=80/tcp

上下作用相同

(1) 查询端口是否开放:firewa11-cmd --query-port=8080/tcp

(2) 开放80端口:firewa11-cmd --permanent --add-port=80/tcp

(3) 移除端口:firewa11-cmd --permanent–remove-port=8080/tcp
(4) 重启防火墙(修改配置后要重启防火墙):firewa11-cmd --reload

常用命令:

​ 执行命令的前提条件,必须进入nginx下的/sbin的目录中 cd /usr/local/nginx/sbin

​ 1.查看 nginx 的版本号 ./nginx -v

​ 2.启动 nginx ./nginx

​ 3.关闭nginx ./nginx -s stop

​ 4.重新加载 nginx ./nginx -s reload


windows查看所有进程: netstat -nao

​ 关闭进程(/f表示强制关闭):taskkill /pid 进程号 /f

linux查看当前nginx进程:ps -aux | grep nginx 或者 ps -ef | grep nginx

​ 关闭进程(-9表示强制关闭):kill 进程号 -9

配置文件:

​ 配置文件位置:cd /usr/local/nginx/conf/nginx.conf

配置文件分三部分:

​ 1.全局块

​ 2.events块

​ 3.内容块

http内容块:

http块又包括 http全局块、server 块。http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单连接请求数上限等

include
设置nginx支持的多媒媒体文件类型,mime.types是引用nginx下的媒体类型文件。路径在config目录下,可自行查看.

default type
默认值为application/octet-stream;表示为二进制流传输
log fomat 设置log日志格式
sendfile 发送文件(默认开启)
简单来说就是启用sendfle0系统调用来替换read0和write调用,减少系统上下文切换从而提高性能,当 nginx 是静态文件服务器时,能极大提高nginx的性能表现,而当 nginx 是反向代理服务器时,则没什么用了。

sendfile的工作原理:

sendfle = of 时,应用程序读取磁盘中的文件以字节流的形式从磁盘中加载文件,然后再将文件以字节流的形式复制到内核中。内核在把文件推送到NC。

sendfle=on 时,应用程序直接向内孩发送指令,让内核去读文件。读完文件内核直接推送给NC。只有一次复制操作,实现异步网络10形式。因此,性能会有很大的提升。
具体还要根据实际使用情况来配置sendfile。当读取服务不能解析大量的文件时。还是建议将sendfile配置为off

tcp nopush(默认no)
nginx 中,tcp nopush 配置和 tcp nodelay"互斥"。它可以配置一次发送数的包大小,也就是说,它不是按时间累计 0.2 秒后发送包,而是当包累计到一定大小后就发送。

		<h3>service内容块:</h3>

每个 http 块可以包括多个 server 块,而每个 server 块就相当于个虚拟主机。而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块

listen
表示监听的端口号,这个端口就是访问nginx时候使用的,80是默认端口,访问时候可以省略。也可以配置其他端口

server name
Nginx中的server _name指今主要用于配置基于名称的虚拟主机,如果没有多配置的情况下,名称可以随意指定一个就行

location
这里主要配置需要访问的资源地址,root表示哪个文件夹。index表示访问的缺省网页是哪一个。如果走代理,则配置修改为proxy.pass方
error_page
配置异常信息访问地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值