玖叶教程网

前端编程开发入门

如何从零开始学Nginx?(如何从零开始学炒期货)

第二章应用篇

2.1 Nginx 配置段详解

										// 全局区
// 有 1 个工作的子进程,可以自行修改,但太大无益,因为要争夺 CPU,
// 一般设置为 CPU 数*核数
worker_processes 1;
Events {
// 一般是配置 nginx 连接的特性
// 如 1 个 worker 能同时允许多少连接
worker_connections 1024; // 这是指 一个子进程最大允许连 1024 个连接
}

http { //这是配置 http 服务器的主要段

Server1 { // 这是虚拟主机段

location { //定位,把特殊的路径或文件再次定位 ,如 image 目录单独处理

}// 如.php 单独处理

}

Server2 {

}

}

2.1 Nginx 配置虚拟主机

例子 1: 基于域名的虚拟主机

server {

listen 80; #监听端口

server_name a.com; #监听域名,如有多个,空格隔开location / {

root /var/www/a.com; #根目录定位

index index.html; #默认索引页

}

}


例子2: 基于端口的虚拟主机配置

server {

listen 8080; server_name a.com;

location / {

root /var/www/html8080; index index.html;

}

}

2.1 日志管理


我们观察nginx 的server 段,可以看到如下类似信息

access_log logs/access.log main;

这说明 该 server, 它的访问日志的文件是 logs/host.access.log ,

日志格式”main”格式. main 格式是什么?

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


除了main 格式,你可以自定义其他格式.

log_format mylog
 '$remote_addr [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent"';
server {
        listen 80;
        #下面声明 a.com 使用 mylog 格式日志,并保存在 logs/a.com.log 文件中
        access_log logs/a.com.log mylog; server_name a.com www.a.com;
        ....
}

main 格式是我们定义好一种日志的格式,并起个名字,便于引用.

以上面的例子, main 类型的日志,记录的 remote_addr http_x_forwarded_for 等选项.

1: 日志格式 是指记录哪些选项默认的日志格式: main

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

如默认的 main 日志格式,记录这么几项

远程 IP- 远程用户/用户时间 请求方法(如 GET/POST) 请求体 body 长度 referer 来源信息

http-user-agent 用户代理/蜘蛛 ,被转发的请求的原始 IP

http_x_forwarded_for:在经过代理时,代理把你的本来 IP 加在此头信息中,传输你的原始 IP

实际应用: shell+定时任务+nginx 信号管理,完成日志按日期存储分析思路:

凌晨 00:00:01,把昨天的日志重命名,放在相应的目录下再 USR1 信息号控制 nginx 重新生成新的日志文件

具体脚本:

#!/bin/bash base_path='/usr/local/nginx/logs' 
log_path=$(date -d yesterday +"%Y%m") 
day=$(date -d yesterday +"%d")
mkdir -p $base_path/$log_path
mv $base_path/access.log $base_path/$log_path/access_$day.log 
#echo $base_path/$log_path/access_$day.log
/usr/local/nginx/sbin/nginx -s reopen

定时任务

Crontab 编辑定时任务

01 00 * * * /xxx/path/b.sh
每天 0 时 1 分(建议在 02-04 点之间,系统负载小)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言