nginx怎么通过nginx 关闭access log.log日志判断黑客攻击

Module ngx_http_log_module
nginx 日志相关指令主要有两条,
一条是log_format,用来设置日志格式,另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小。通俗的理解就是先用log_format来定义自己想用的日志格式,然后在用access_log定义日志时再把定义的log_format名称 跟在后面;
1、log_format 格式
log_format name(格式名字) string(格式样式即想要得到什么样的日志内容)
log_format access '$remote_addr - $remote_user [$time_local] "$request" "$request_time" $status $body_bytes_sent "$http_referer" "$http_user_agent" $http_x_forwarded_for';
$remote_addr:与 $http_x_forwarded_for 用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local:用来记录访问时间与时区;
$request:用来记录请求的http的方式与url;
$request_time:用来记录请求时间;
$status:用来记录请求状态;成功是200,
$body_bytes_sent:记录发送给客户端文件主体内容大小;
$http_referer:用来记录从那个页面链接访问过来的;
$http_user_agent:记录客户毒啊浏览器的相关信息。
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。
反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用来记录客户端IP地址和客户端请求的服务器地址
2、用access_log指令日志文件存放路径;用了log_format 指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;access_log path(存放路径) access(自定义日志名称,和log_format设置的名称一致)
示例:access_log logs/access.
注意:在定义日志目录中要注意的是,nginx进程设置的用户和组必须有对该路径创建文件的权限,假设nginx的usr指令设置的用户名 和用户组都是www,而logs 目录的用户名和组是root,那么日志文件将无法被创建。
用nginx做前端代理后,我们发现 HTTP_X_FORWARDED_FOR 无法获取到客户端真实的IP地址了。
原因 nginx 默认并不会增加 X_FORWARDED_FOR 头信息,我们给他加上就好了。简单配置如下:
location /
proxy_pass
http://www.xxx.
proxy_set_header
proxy_set_header
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_
//别忘了这一句
proxy_set_header
HTTP_X_FORWARDED_FOR $remote_
//或是加上这一句
重启nginx加载新配置后,就可以获取客户端真实的IP地址了。
3.日志切割:通过如下方式达到日志切割:
# vi logcron.sh
log_dir="/data/logs/nginx"
date_dir=`date +%Y%m%d`
/bin/mkdir -p ${log_dir}/${date_dir} & /dev/null <span style="color: #&&<span style="color: #
/bin/mv ${log_dir}/access.log ${log_dir}/${date_dir}/access.log
kill -USR1 `cat /opt/nginx/logs/nginx.pid`
定义一个cron,在每天晚上23:<span style="color: #:50执行这个脚本,后面的事情就交给awstats了。
阅读(...) 评论()nginx的access.log日志怎样看_百度知道
nginx的access.log日志怎样看
我有更好的答案
  &#8205;如图对应,分别为 客户端(用户)IP; 访问时间;请求方式(GET、POST或head等)和请求的url地址(目标url地址);http版本;请求状态(状态码,200表示成功,404表示页面不存在,301表示永久重定向等,具体状态码含义可以在网上找);来源页面(即从哪个页面转到本页,专业名称叫做“referer”);浏览器版本。其实nginx access日志的格式不是一成不变的,是可以自定义的。在nginx的nginx.conf配置文件找到:log_format 这里就是日志的格式
采纳率:33%
为您推荐:
其他类似问题
nginx的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。统计访问最多的ip1. tail -n 10000 xxaccess_log | cut -d " " -f 1 |sort|uniq -c|sort -rn|head -10 |more2.tail -n 10000 xx-access_log | awk '{print $1}'|sort|uniq -c|sort -rn|head -10 | more统计访问最多的urltail -n 10000 xx-access_log |awk '{print $7}'| sort|uniq -c| sort -rn| head -10 | more指定ip统计访问最多的urltail -n 1000 xx-access_log& | grep ‘00.00.00.00’|awk '{print $7}'| sort|uniq -c| sort -rn| head -10 | more通过日志查看当天访问次数最多的时间段tail -n 1000 xx-access_log | awk '{print $4}'|cut -c 14-21 |sort|uniq -c|sort -rn|head -10|more
阅读(...) 评论()&#47;usr&#47;local&#47;nginx&#47;logs&#47;access.log居然有8G多?可以直接删除吗?_百度知道
&#47;usr&#47;local&#47;nginx&#47;logs&#47;access.log居然有8G多?可以直接删除吗?
/usr/local/nginx/logs/access.log居然有8G多?可以直接删除吗? 如题。/usr/local/nginx/logs/access.log使用半月居然有8G多?可以直接删除吗?
我有更好的答案
如果nginx的日志文件对你们应用没有太大影响的话,可以删除。建议做个脚本,每天切割一下日志,然后压缩一下。这样磁盘空间占用就小了。
采纳率:50%
如果不需要日志功能的话,可以关闭..http 段 写上
access_ 即可
为您推荐:
其他类似问题
nginx的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。背景:有时程序偶出现参数少了或没有提交到下一个链接Url里后出现问题,如何查呢,最好的办法是在上的加post参数,以定位到问题才有可能对某个UIR的代码出现的问题进行排查。
og_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_agent" $http_x_forwarded_for';
access_log logs/test.access.
注意放的位置在http里:nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/local/nginx/conf/vhost/xxx.conf:59
nginx.conf
http里定义:wwwlog
log_format&&wwwlog&&'$remote_addr - $remote_user [$time_local] "$request" '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for "$request_time"';
在include每个域名里后面加上wwwlog:
access_log&&/data/logs/access_mytv.
于是在同样的access后这样写:
nginx.conf
log_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_agent" $http_x_forwarded_for';
包含的justwinit.conf:
access_log
/data/logs/access_mytv.log access
日志如下:
202.108.16.77 - - [14/Jan/:45 +0800] "POST /partin/releaseinfo HTTP/1.1" 302 5 id=47&choice_type=new&eid=338&videoid=5d6dabda-9b97-11e4-a4ab6e&file_ext=mp4&lang=zh&upload_server=202.108.17.15&title=7%E5%B2%81%E5%B0%8F%E5%AD%A9%E9%85%92%E7%93%B6%E4%B8%8A%E5%81%9A%E4%BF%AF%E5%8D%A7%E6%92%91%E8%B9%BF%E7%BA%A2%E7%BD%91%E7%BB%9C&desc=7%E5%B2%81%E5%B0%8F%E5%AD%A9%E9%85%92%E7%93%B6%E4%B8%8A%E5%81%9A%E4%BF%AF%E5%8D%A7%E6%92%91%E8%B9%BF%E7%BA%A2%E7%BD%91%E7%BB%9C&tags=%E6%B5%8B%E8%AF%95%E4%B8%80%E4%B8%8B%E3%80%82&checkflag=on "http://justwinit.cn/partin/showupload/activityid/47" "Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/ Firefox/34.0" -
POST URI及参数:POST /partin/releaseinfo HTTP/1.1" 302 5&&.....
来自的refer Uri:http://justwinit.cn/partin/showupload/activityid/47
这个access_log的log_format应该可以定义多个不同的名供不同日志的需求。
get请求的参数就是存放在http header中的,所以修改header的大小限制 当然可以解决请求串过长的问题啦。
移动互联网行业开发过程中,服务端经常会需要检查是否收到请求,收到什么样的请求,最简单的办法就是看nginx的access log,常见的nginx配置中access log一般都只有GET请求的参数,而POST请求的参数却不行。
http://wiki.nginx.org/NginxHttpCoreModule#.24request_body
$request_body
This variable(0.7.58+) contains the body of the request. The significance of this variable appears in locations with directives&_pass or fastcgi_pass.
正如上文件所示,只需要使用$request_body即可打出post的数据,在现存的server段加上下面的设置即可:
log_foat access '$remote_addr - $remote_user [$time_lo] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_agent" $http_x_forwarded_for';
access_log logs/test.access.
本文来自:
阅读(...) 评论()

我要回帖

更多关于 nginx access.log过大 的文章

 

随机推荐