nginx认知

1、模型

master:主进程 (只有一个,老板)
worker:工作进程 (为主进程服务,默认只有一个,员工)
1 修改工作进程个数,conf主配置文件,worker_processes 1(可修改)
2 检测nginx配置是否ok:…/sbin/nginx -t
3 重启 …/sbin/nginx -s reload
4 验证 :ps -ef|grep nginx
一般一个进程足够了,你可以把连接数设得很大。
如果有SSL、gzip这些比较消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。
或者要处理很多很多的小文件,而且文件总大小比内存大很多的时候,也可以把进程数增加,
以充分利用IO带宽
如果出现页面假死或者502的错误,尝试修改进程个数,cup数量2倍或者用默认的

在这里插入图片描述

2、worker抢占机制

在这里插入图片描述
在这里插入图片描述
conf中配置
在这里插入图片描述
并发高原因

1抢占机制
2模型 采用异步非阻塞通讯模式(高效通讯,多路复用器)

3、nginx配置结构

在这里插入图片描述

配置说明

#user  nobody; #worker是有什么权限用户运行 例如 root
worker_processes  1; #进程的数量,服务cpu相关

#debug info notice warn error crit (日志级别)
#error_log  logs/error.log; 错误日志,日志路径可配置(安装时可配置)
#error_log  logs/error.log  notice(日志级别);
#error_log  logs/error.log  info;

#pid        logs/nginx.pid; nginx进程号(安装时可配置)


events {
	#默认使用epoll window lunx 系统默认模式不一样
	use epoll
	#每个worker允许客户端最大连接数
    worker_connections  1024;
}


http {
    include       mime.types;#包含 导入外部文件 提高可读性 types
    default_type  application/octet-stream;#默认type类型

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log(安装编译的时候可配置)  main; 用户请求记录(上面三行注解设置格式)

    sendfile        on;#发送文件,用于文件传输。提高性能
    #tcp_nopush     on;#和sendfile结合使用,数据包累计到一定大小才发送

    #keepalive_timeout  0;客户端连接服务器超时时间 以秒为单位 keepalive连接存活时间(存活时间内不用创建新的连接) 
    keepalive_timeout  65;

    #gzip  on; #压缩传输,节约服务器带宽。压缩消耗cpu性能

    server {#虚拟主机
        listen       80;#监听端口号
        server_name  localhost;#ip或域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {#路由,找到对应的页面  /代表根
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;#错误页面
        location = /50x.html { #匹配规则
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

4、常见错误

1 nginx.pid failed (2:no such file or director)
解决办法:目录不存在 mkdir重新创建目录
2 invalid PID number “” in …
解决办法:./nginx -h查找帮助文档,查找命令 -c filename
指定nginx.conf 位置 (./nginx -c /user/local…)
也可以使用默认的,默认位置查看配置文件

5、常用命令

命令说明
./nginx -s stop立即关闭nginx
./nginx -s quit关闭,处理完任务再关闭
./nginx -t检查配置是否成功
./nginx -v检查版本
./nginx -V详细信息
./nginx -?,-h帮助

6、日志切割

日志可在安装的时候指定路径,可通过 -V命令查看。

  1. 创建一个shell可执行文件: cut_my_log.sh 内容为:

#!/bin/bash
#日志所在的位置
LOG_PATH="/var/log/nginx/"
#日志以天为单位
RECORD_TIME=$(date -d “yesterday” +%Y-%m-%d)
#nginx所指定的进程
PID=/var/run/nginx/nginx.pid
#把access.log重命名
mv ${LOG_PATH}/access.log L O G P A T H / a c c e s s . {LOG_PATH}/access. LOGPATH/access.{RECORD_TIME}.log
mv ${LOG_PATH}/error.log L O G P A T H / e r r o r . {LOG_PATH}/error. LOGPATH/error.{RECORD_TIME}.log
#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 cat $PID

  1. 为 cut_my_log.sh 添加可执行的权限:

chmod +x cut_my_log.sh

  1. 测试日志切割后的结果:

./cut_my_log.sh

7、Nginx 日志切割-定时

使用定时任务

  1. 安装定时任务:

yum install crontabs

  1. crontab -e 编辑并且添加一行新的任务:

*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

  1. 重启定时任务:

service crond restart

附:常用定时任务命令:

命令说明
service crond start启动服务
service crond stop关闭服务
service crond restart重启服务
service crond reload重新载入配置
crontab -e编辑任务
crontab -l查看任务列表

定时任务表达式:
Cron表达式是,分为5或6个域,每个域代表一个含义,如下所示:

$星期几年(可选)
范围0-590-231-311-121-72019/2020/2021/…

常用表达式:
每分钟执行:

*/1 * * * *

每日凌晨(每天晚上23:59)执行:

59 23 * * *

每日凌晨1点执行:

0 1 * * *

8、配置静态资源

在这里插入图片描述
别名

server {
        listen       80;
        server_name  localhost;
        location / {
            root   /home/code;
            index  index.html;
        }
		location /any { #别名/any 随便都可以,会去alias下的路径去找资源
            #root   /home;
			alias /home/resources
        }
	}	
	

9、压缩

	配置中修改
	#开启gzip压缩功能,目的提高传输效率,节约带宽
	gzip on ;
	#限制最小压缩,小于1字节文件不会压缩
	gzip_min_length 1;
	#定义压缩级别(压缩比,文件越大,压缩越多,cpu使用会越多)
	gzip_comp_level 3;
	#定义压缩内容
	gzip_types test/plain application/.........

10、 location 的匹配规则

空格 :默认匹配,普通匹配

location / {
root /home;
}

= :精确匹配

location = /imooc/img/face1.png {
root /home;
}

~* :匹配正则表达式,不区分大小写

#符合图片的显示
location ~ .(GIF|jpg|png|jpeg) {
root /home;
}

~ :匹配正则表达式,区分大小写

#GIF必须大写才能匹配到
location ~ .(GIF|jpg|png|jpeg) {
root /home;
}

^~ :以某个字符路径开头

location ^~ /imooc/img {
root /home;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值