访问状态
- ststus 指令
- 此参数属于ngx_ http_ stub_ status_ module 模块,这个模块的主要功能是记录Nginx的基本访问状态信息,让使用者了解Nginx的工作状态,例如连接数等信息。要使用状态模块,在编译Nginx时必须增加http stub_ status module模块来支持。
- 配置方法:
vim conf.d/state.conf
server {
listen 80;
server_name state.axb.com;
stub_status;
}
访问日志
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_x_real_ip"';
access_log /var/log/nginx/access.log main;
参数 | 解释 |
---|---|
log_format | 可定义多种日志格式,取不同名称即可 |
access_log | 用来指定日志文件的路径及使用那种日志格式 |
"log_format"指令只能配置在"http块"中。
"access_log"指令可以配置在以下区块中:
http, server, location, if in location, limit_except
日志变量 | 说明 |
---|---|
$remote_addr | 记录访问网站的客户端地址 |
$http_x_forwarded_for | 当前端有代理服务器时,设置Web节点记录客户端地址的配置 |
$remote_user | 远程客户端用户名称 |
$time_local | 记录访问时间与时区 |
$request | 用户的http请求起始行信息 |
$status | http状态码,记录请求返回的状态,如 200,404等 |
$body_bytes_sents | 服务器发送给客户端的相应body字节数 |
$http_referer | 记录此次请求是从哪个链接访问过来的, |
$http_user_agent | 记录客户端访问信息,如:浏览器,手机等… |
错误日志
属于ngx_core_module模块的参数,参数名为error_log, 可以在Main区块中全局配置,也可放置在不同的虚拟主机中单独记录.
关键字 | 日志文件 | 错误级别 |
---|---|---|
error_log | /var/log/nginx/error.log | warn |
-
生产场景使用warn|error|crit之一
-
错误级别
[debug|info|notice|warn|error|crit|alert|emerg]
可放置区域
main, http, server, locatio
日志切割
- 脚本
#!/bin/bash
log_name="access.log"
log_dir="/var/log/nginx"
dir=$(/usr/bin/ls -l /var/log/nginx/access.log|awk '{print $5}')
Date=$(date +%F-%T)
if [ $dir -gt 300000 ];
then
mv $log_dir/$log_name /backup/${log_name}_$Date
nginx -s reopen
else
exit
fi
#定时任务:
0 */3 * * * /bin/sh /server/scripts/access_cut.sh &>/dev/null
- logrotate
主配置文件:vim /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly #切割日志时间周期 daily hourly monthly
# keep 4 weeks worth of backlogs
rotate 4 #保留多少数据备份,4份
# create new (empty) log files after rotating old ones
create #轮换旧文件后创建新的(空)日志文件
# use date as a suffix of the rotated file
dateext #使用日期作为轮询文件的后缀
# uncomment this if you want your log files compressed
#compress #确认切割后日志是否打包压缩
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d #RPM软件包将日志轮询配置文件放入此目录中
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp { #指定特定日志文件做特殊切割处理
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
索引(共享)功能
- autoindex 启动或关闭目录功能
- charset 页面设置字符集
server {
listen 80;
server_name www.test.cn test.cn;
autoindex on;
charset utf-8; #设置字符集,避免乱码
root /html/www; #将资源上传至此目录
#index index.html index.htm;
error_page 500 502 503 504 /50x.html;
}
- 需要将首页文件去掉,否则会优先显示首页文件的内容
- 若想下载资源可将将mime.types文件中的某些静态资源注释掉.不识别的会自动下载
访问控制
- allow
- deny
deny的优先级高于allow
server {
listen 80;
server_name www.axb.com axb.com;
root /html/www;
index index.html index.htm;
location /ss {
deny 10.0.0.0/24;
}
location /mm {
deny 172.16.1.0/24;
}
}
登陆认证
- auth_basic 开启认证功能
- auth_basic_user_file 启用密码文件
- 配置文件
server {
listen 80;
server_name bbs.axb.com;
root /html/bbs;
autoindex on;
index index.html index.htm;
charset utf-8;
error_log /var/log/nginx/error_bbs.log warn;
location /ss_dir {
auth_basic "sa env auth";
auth_basic_user_file conf/htpasswd;
}
}
- 生成密码文件
yum install -y httpd-tools
用法一: 创建密码文件并添加用户信息
htpasswd -bc /etc/nginx/conf/htpasswd sa sa123
用法二: 添加新的认证用户
htpasswd -b /etc/nginx/conf/htpasswd sa01 sa123
用法三: 删除指定认证
htpasswd -D /etc/nginx/conf/htpasswd sa01