nginx的配置使用详解

一.nginx的概述

1.nginx

Nginx (engine x)是一个高性能的HTTP和反向代理web服务器。用于HTTP协议、HTTPS、SMTP、POP3和IMAP协议。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

2.同步与异步

同步:客户端发起请求,请求从用户。socket被一直占用
异步:服务发起,服务器立即返回信息。socket没有被占用

3.阻塞和非阻塞

阻塞: 线程在执行IO操作获取数据时,这个IO可能需要一定的时间才能等到数据返回,然后才能放接着执行下面的命令。这个线程的等待状态称为阻塞,这样很显然没有充分利用起cpu的资源。
非阻塞: 这个线程在进行IO操作时,无需等待数据的返回,可以接着往下执行代码

4.nginx的优势

IO输入模型:nginx使用的异步非阻塞模型,apache使用的是同步阻塞,存在进程间切换是要消耗资源的。这也就是为何nginx要比apache处理更多的请求更多的并非的原因。

二.nginx的配置

1.下载源码并解压 nginx-1.15.8.tar.gz

tar zxf nginx-1.15.8.tar.gz

在这里插入图片描述
2.debug关掉

vim auto/cc/gcc 
# debug
#CFLAGS="$CFLAGS -g"

在这里插入图片描述
3.解决依赖性

yum install -y pcre-devel zlib-devel gcc

4.语法检测
在这里插入图片描述

5.源码编译

./configure --prefix=/usr/local/nginx --with-file-aio

6.make
在这里插入图片描述
7.make install

8.版本检测

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -V ##查看版本号

在这里插入图片描述

9.开启nginx

/usr/local/nginx/sbin/nginx

10.添加用户nginx

useradd nginx

在这里插入图片描述
11.修改配置文件前关掉nginx

/usr/local/nginx/sbin/nginx -s stop

12.修改限制文件,设置最大连接数为65536

vim /etc/security/limits.conf
nginx   -       nofile  65536

13.修改配置文件nginx.conf

vim /usr/local/nginx/conf/nginx.conf
user  nginx nginx;
worker_processes  2;

events {
    worker_connections  65535;
}

三.nginx版本更新

1.下载更高版本nginx-1.16.0.tar.gz

2.解压

tar zxf nginx-1.16.0.tar.gz

在这里插入图片描述
3.编译的参数要与之前的版本编译时一致

./configure --prefix=/usr/local/nginx --with-file-aio

4.make

5.查看版本nginx-1.16.0

./nginx -V

在这里插入图片描述
6.旧版本备份,一旦更新失败回滚。

cd /usr/local/nginx/sbin/

./nginx -V
cp nginx nginx.old

在这里插入图片描述
7.复制新的源码

cp -f /root/nginx-1.16.0/objs/nginx /usr/local/nginx/sbin/

8.让旧版本的master停止接受新的连接访问

ps -ef | grep nginx
kill -USR2 9884  ##9884是旧版本master进程号

在这里插入图片描述在这里插入图片描述
9.旧版本的worker处理完访问后关闭

kill -WINCH 9884
ps -ef | grep nginx

在这里插入图片描述
10.更新完成

/usr/local/nginx/sbin/nginx -V

在这里插入图片描述

四.nginx的版本回滚

1.版本会滚

cd /usr/local/nginx/sbin/
cp -f nginx.old nginx

在这里插入图片描述
2.唤醒旧版本的master,让他开启旧版本的worker
master进程是读取及评估配置和维持。worker进程是用来处理请求的。

kill -HUP 9884

在这里插入图片描述

3.让新版本的master停止接受新的连接访问

kill -USR2 9890 ##9890是新版本master进程号

4.让新版本的worker处理完后关闭

kill -WINCH 9890

在这里插入图片描述
5.回滚完成

/usr/local/nginx/sbin/nginx -V

在这里插入图片描述
6.杀死更新失败的新版本master进程

kill -9 19559
/usr/local/nginx/sbin/nginx -V

在这里插入图片描述
7.浏览器访问172.25.77.1(nginx的测试页)
在这里插入图片描述

五.nginx的日志管理

1.查看日志文件

cd /usr/local/nginx/logs

在这里插入图片描述
2.日志文件大小
1)查看日志大小

du -sh *

在这里插入图片描述

2)客户端访问请求

ab -c 1 -n 100000 http://172.25.77.1/index.html

在这里插入图片描述
3)再次查看日志大小
在这里插入图片描述
3.reopen重新生成日志文件
1)备份(实际不可能以上方式备份日志文件!)

cd /usr/local/nginx/logs
mv access.log access.log.bak  ##备份

2)reopen

/usr/local/nginx/sbin/nginx -s reopen

在这里插入图片描述
4.备份日志
日志往往需要切割处理保存,以时间来命名保存比较合理

mv access.log `date +%F -d -1day`_access.log

在这里插入图片描述
写一个脚本结合crontab实现每天的零点零分对nginx的前一天的日志文件备份,并重新生成新的日志文件.

vim backup.sh

#!/bin/bash

LOG_PATH=/usr/local/nginx/logs/oldlogs
CUR_LOG_PATH=/usr/local/nginx/logs
YESTERDAY=$(date +%F -d -1day)

mv $CUR_LOG_PATH/access.log $LOG_PATH/${YESTERDAY}_access.log
mv $CUR_LOG_PATH/error.log $LOG_PATH/${YESTERDAY}_error.log

kill -USR1 $(cat $CUR_LOG_PATH/nginx.pid)

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

六.nginx的压缩

1.为了效果明显,修改nginx访问页面
用/etc/password复制过来作为访问内容.
在这里插入图片描述
2.浏览器访问172.25.77.1
F12 查看340k是68k
在这里插入图片描述
3.修改配置文件

vim /usr/local/nginx/conf/nginx.conf

    gzip  on;
    gzip_min_length 1;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd/php image/jpeg image/gif image/png;

在这里插入图片描述
4.重新加载nginx

/usr/local/nginx/sbin/nginx -s reload

5.浏览器访问172.25.77.1
F12 查看66.12k压缩成1.4k
在这里插入图片描述

七.nginx启动方式的修改

/usr/lib/systemd/system ##系统默认systemctl命令存在目录
/etc/systemd/system  ##官方建议的用户自己的命令目录

1.安装httpd

yum install -y httpd

2.将httpd服务的作为模板复制,并修改

cp httpd.service /etc/systemd/system/nginx.service

vim /etc/systemd/system/nginx.service

[Unit]
Description=The Nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=foring
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/url/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

3.关闭nginx

systemctl stop nginx
systemctl status nginx

在这里插入图片描述
4.打开nginx

systemctl start nginx
systemctl status nginx
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值