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
发布了108 篇原创文章 · 获赞 127 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/chaos_oper/article/details/90046234
今日推荐