企业 nginx安装、配置介绍

nginx

主要用途:静态页面服务器html,反向代理reverse proxy(缓存cache、负载均衡lb),接口API(openresty)
优点:高并发,高性能。在3w请求访问,开启10个 nginx 进程时,才会使用大约150Mb的内存

安装

nginx官网:
nginx.org,开源ngix软件网站
nginx.com,nginx plus 版的网站,是收费版

在这里插入图片描述
进入download后可以看到分为3大块,
Mainline version 主流版本,作为发出的测试版供大众使用
Stable version 稳定版本,是最新的稳定版本
Legacy versions 旧版本,之前的版本
在这里插入图片描述
这里需要下载直接点击框中的版本名就可以下载,这里下载的是源码包,我们在下载后需要自行进行源码编译
在这里插入图片描述
下载好后,先进行解压
在这里插入图片描述
简单看一下nginx的目录
在这里插入图片描述
conf 配置文件目录是可以在安装后直接复制到配置目录下,方便我们使用
configure 源码编译的脚本
contrib 语法检测目录,帮助在写nginx目录时检测语法问题,要使用的话在当前用户家目录下创建一个 .vim 的目录,将目录里的 vim/* 全部复制到 .vim 中就可以
html 默认发布目录,类似apache,这里面有两个默认文件50x.html 错误访问页、index.html默认发布页
man 帮助文档
src 源码目录,里面有nginx的很多模块

源码编译是,可以使用./configure --help 查看编译需要的参数,看需要添加或去除什么模块
在这里插入图片描述
./configure --prefix=/usr/local/nginx --with-http_ssl_module,我这里指定安装在/usr/local/nginx里,并添加了http的ssl模块可以支持https
在这里插入图片描述
安装过程中碰到报错失败的情况,yum安装对应需求的依赖性开发包即可解决,如下:
在这里插入图片描述
编译完成后,执行 make 命令
在这里插入图片描述
最后执行:make install ,安装程序
安装完成后,在指定的安装目录/usr/local/下就可以看到nginx
在这里插入图片描述
这里nginx里会有4个目录:
conf 配置文件目录
html 默认发布目录
log 日志目录
sbin 二进制文件目录
在这里插入图片描述

运行及配置

运行nginx,在/usr/local/nginx/sbin目录里有一个nginx脚本,直接运行这个脚本即可
运行后可以看到,开启后nginx使用的是80端口
在这里插入图片描述
这时我们就可以测试访问,注意关闭火墙或者添加nginx服务 ,通过ip访问
在这里插入图片描述
./sbin/nginx -V 可以查看当前nginx的版本,在信息最下方还有我们添加的功能,就是我们安装时手动添加的
在这里插入图片描述

版本更新,版本回退

当服务程序有新的版本出现时,我们会需要去更新程序,但是企业中我们的nginx服务器是不能说删除旧版本再安装新版本这样操作,第一删除再安装会导致信息丢失,第二会使服务器下线,所以我们需要在程序运行中安装新的版本并且创建新的进程替换它。

更新

这里我下载了1.18版本当作新版本更新使用
在这里插入图片描述
第一步 解压1.18版本
在这里插入图片描述

第二步 先将就的nginx 备份一份
备份的目的使防止我们再更新时出错,可以进行版本回退。
这里需要备份的就是 sbin/nginx 这个二进制文件,因为在更新时更改的也就是这个文件。
在这里插入图片描述

第三步 在1.18版本里进行编译
先执行:./configure --prefix=/usr/local/nginx --with-http_ssl_module
这里执行编译时需要将之前添加的功能等参数再加上,保持与先版本一致
再执行:make 预编译
不要执行make install ,这样做会覆盖我们之前安装的nginx,导致信息丢失,只有在第一次安装时才执行这个命令

编译完成后在1.18版本的源码目录里会生成一个objs的目录,这个目录会有我们需要的nginx二进制程序文件,只需要将这个文件复制到我们之前nginx的安装目录的 sbin/ 即可
在这里插入图片描述
第四步 拷贝新版本编译出的nginx二进制文件
这里需要注意的是,因为nginx程序是运行中的,所以复制重写是需要加参数 cp -f 强制重新,然后去查看版本就可以看到更新到新版本了
在这里插入图片描述
第五步 进程更新
我们更新过程序后,因为之前版本的程序一直是运行的,客户在访问时还是由旧的程序进程处理请求,我们现在需要停止旧的进程,让新的进程来接替工作
在这里插入图片描述
这里查看到的nginx的进程有两个 master 和 worker 。
master进程是监控worker进程正常运作的,如果worker进程出现问题,master进程就会创建新的worker进程进行工作;
worker进程是真实处理用户请求的进程。
执行命令:kill -USR2 27829 ,让就的master进行不再就收请求并创建一个新的master接替工作
在这里插入图片描述
然后执行命令:kill -WINCH 27829,结束旧master的子进程,这里我们先不关闭旧的mater进程,意义在于如果我们新版本运行时出现问题,还可以使用旧的1.16版本的master接替工作
在这里插入图片描述

回退

当我们执行上述的版本更新出现问题时,新的版本无法正常运行,我们就需要回退到之前的1.16版本。
第一步 使用之前本分的nginx.old 覆盖现在nginx二进制文件
这里我们覆盖时不需要去备份,因为新的版本出问题了我们就没有必要保留它
在这里插入图片描述

第二部 唤醒1.16版本的master进程
kill -HUP 27829,唤醒就的master 进程开启worker进程开始运行
在这里插入图片描述

第三步 停止1.18版本运行的进程
kill -WINCH 31786 ,停止1.18版本master进程的子进程
在这里插入图片描述
kill -USR2 31786 ,停止1.18版本master进程的使用
在这里插入图片描述
最后:kill -9 31786 关闭这个进程,就完成了版本的回退
在这里插入图片描述

nginx 日志切割

为了防止nginx的日志过大,导致超过内存无法打卡查看。
日志切割也是方便后期的查看。
nginx的日志存放在程序目录下的 logs/ ,分为acces.log访问日志 和 error.log错误日志
在这里插入图片描述
为了让日志的大一些,我们在测试主机上使用命令:ab -c 1 -n 100000 http://172.25.254.1/index.html ,-c 1表示一个并发,-n 100000 发出十万次请求到172.25.254.1上
如果没有ab命令使用:yum -y install httpd-tools 安装
在这里插入图片描述
来查看一下日志文件的大小
在这里插入图片描述
然后我们执行日志的切割备份:mv logs/access.log logs/date +%F -d -1day_access.log ,这个操作我们可以在每天0点写到定时任务里自动执行,就可以把前一天的日志保存起来,第二天创建的日志又可以放在新创建的access.log文件里。 date +%F -d -1day 是一个命令执行转换表示显示前一天的时间格式为xx-xx-xxx
在这里插入图片描述
再执行:./sbin/nginx -s reopen,重新打开nginx文件,创建access.log文件接收新的日志,也可以写在定时任务里在切割操作之后执行
在这里插入图片描述

nginx 发布页面的gzip压缩

首先我们给默认发布页面写一些内容使它变大
在这里插入图片描述
访问页面并查看访问的大小,看到我们看到的页面是网页本来的大小没有变化
在这里插入图片描述
编辑配置文件:vim conf/nginx.conf

    gzip  on;	#开启压缩
    gzip_min_length 100;	#设置最小压缩范围是100k,大于100k就会压缩
    gzip_comp_level 2;		#压缩等级为2级,一共有9个级别越高压缩率越高
    gzip_types text/plain application/x-javascript text/css application/xml text/javascirpt application/x-httpd-php image/jpeg image/gif image/png;		#配置各种压缩的类型

在这里插入图片描述
写完后执行:./sbin/nginx -t 检测语法
./sbin/nginx -s reload 重新加载
在这里插入图片描述
再去访问网页就可以看到经过压缩后转换出的大小
在这里插入图片描述

nginx 配置文件conf/nginx.conf

在这里插入图片描述

user nginx nginx;	#设置开启nginx的用户和组都是nginx
worker_processes  1;	#设置work进程的数量,一般为cpu的核数

在这里插入图片描述

events {
    worker_connections  1024;
}
这是nginx的最大连接设置,默认是1024,可以改更大的,但是要注意,在使用nginx最为反向代理时支持的最大连接这个数字是除以2的

在这里插入图片描述
在这里插入图片描述

nginx 的部分功能测试说明

nginx的功能可以通过查阅网站:nginx.com
网站里的Documentation 文档进行查阅
在这里插入图片描述

简单演示怎么使用nginx限制访问并发数,访问速率

首先根据文档查看到的提示,我们先写入一个新的资源模块和目录

limit_conn_zone $binary_remote_addr zone=addr:10m;	zone=addr:10表示最大链接数为10Mb大小,超过就会报错
       
    location /download/ {		#定义addr的访问目录
        limit_conn addr 1;		#设置访问的并发连接数为1
    }

在这里插入图片描述

创建出这个download目录,并且给这个目录中放一个可访问到资源,然后使用网页浏览测试
在这里插入图片描述
在这里插入图片描述
测试没有问题后,首先来看访问的并发连接数的限制,
使用命令:ab -c 2 -n 10 http://172.25.254.1/download/test.jpg ,可以看到2次并发只成功了一半,只有一次并发访问成功了
在这里插入图片描述
限制请求速率,编辑配置文件写入配置

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;	#定义新的请求处理区域one 大小还是10m,并且这个区域限制速率为1个请求/s
    location /download/ {
        limit_conn addr 1;
        limit_req zone=one burst=5;		#使用速率限制的区域,并设置在请求超出后,可以允许5个排队
    }
	

在这里插入图片描述
保存配置,检测语法和重新加载后进行测试;
测试结果看到平均的处理速度就在1秒左右。
在这里插入图片描述
限制加载速率

limit_rate 50k;	#限制下载速率为50k

在这里插入图片描述
查看我们的访问资源是428k,一次的访问时间差不多就是8s左右
在这里插入图片描述
测试:ab -c 1 -n 10 http://172.25.254.1/download/test.jpg,还是访问10次,用时可以看到是80.209s
在这里插入图片描述

日志重定向

还是在配置文件中,打开 log_format 功能,这里可以定义日志的格式
在这里插入图片描述
还需要打开日志储存位置,可以重新写路径,我重写为logs/test.access.log
在这里插入图片描述
测试访问一次:curl 172.25.254.1/download/test.jpg,新的访问日志都存在了新定向的文件中
在这里插入图片描述

获取真实用户ip

在我们正常的企业中,用户的上网访问时通过网络路由出来,经过企业cdn再到 4lb 最后到 7lb nginx服务器上,而这里的每一个环节都有各自的路由ip,所以我们在企业里最后看到的可能都是4lb 上运行的ip,这对于企业并没有作用,无法进行数据分析。
所以我们需要通过配置来进行真实的用户ip获取。
同样可以通过官方网站里的官方文档查看方法,里面还有提供我们示例
在这里插入图片描述
在配置文件里,我们创建虚拟主机并添加参数和配置新的资源目录

server {		#配置虚拟服务器
    listen 80;	
    server_name server1.example.com;	#配置服务器主机名
    set_real_ip_from 172.25.254.1;	#设置需要过滤的信任的ip,因为我们对可以通信的上一级ip肯定是信任的
    real_ip_header X-Forwarded-For;		#打开真实ip模块
    real_ip_recursive on;				#开启对上层通信服务器的ip信任

    location / {						#配置虚拟服务器的访问资源
        return 200 "real ip is: $remote_addr\n";	#不配置具体资源,返回真确访问200,和真实ip
    }
}

在这里插入图片描述

这里如果需要使用真实ip模块,在编译时需要去添加该模块,如果已经安装过软件,可以安装更新的方式重编译后复制二进制文件
在这里插入图片描述
编译添加完成后,再检测我们的配置语法正确,加载也成功。

测试实验,这里我们使用另一台主机做nginx反向代理,然后以现在的172.25.254.1主机作为服务器,用户通过172.25.254.2主机访问到真实的服务器172.25.254.1上,我们获取用户真实ip。
nginx的反向代理可以在文档里看配置方法:
在这里插入图片描述
在反向代理主机中安装nginx,在配置文件的http里写入配置,然后添加地址解析,检测语法启用nginx

http {
    upstream webservers {		#反向代理模块
        server server1.example.com;		#真实服务器组
    }

    server {
        listen 80;		#连接端口
        server_name 172.25.254.4;

        location / {
            proxy_pass http://webservers;	#被访问时自动访问真实服务器
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Howei__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值