目录
6.Nginx日志Log
6.1日志配置 (日志模块:ngx_http_log_module)
6.2日志轮转
7.Nginx WEB模块
7.1连接状态 (stub_status_module)
7.2随机主页 (random_index_module)
7.3替换模块(sub_module)
7.4文件读取(ngx_http_core_module)
7.5文件压缩(ngx_http_gzip_module)
7.6页面缓存(ngx_http_headers_module)
7.7防盗链
6.Nginx日志Log
6.1日志配置 (日志模块:ngx_http_log_module)
简介:Nginx有非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令定义。
vim /etc/nginx/nginx.conf
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';日志格式允许包含的变量
$remote_addr #远程地址,记录客户端IP地址
$remote_user #远程用户,记录客户端用户名称
[$time_local] #本地时间,服务器自身时间
$request #请求,记录请求的URL和HTTP协议
$status #状态,记录请求状态$body_bytes_sent #发送给客户端的字节数,不包括响应头的大小
$http_referer #记录从哪个页面链接访问过来的(超链接)
$http_user_agent #记录客户端浏览器相关信息$http_x_forwarded_for #代理IP
6.2日志轮转
Nginx安装会默认启动日志轮转
rpm -ql nginx | grep log
vim /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily #日志文件将按天轮循。
missingok #在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
rotate 52 #转储次数,超过将会删除最老的那一个
compress #压缩
delaycompress #延迟压缩,总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用
notifempty #空文件不轮转
create 640 nginx adm #以指定的权限和用户属性,创建全新的日志文件,同时logrotate也会重命名原始日志文件。
sharedscripts #只为整个日志组运行一次的脚本
postrotate #在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd进程将立即再次读取其配置并继续运行。注意:这两个关键字必须单独成行。
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
轮转语句:指令 /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/lograte.con
7.Nginx WEB模块
7.1连接状态 (stub_status_module)
#nginx -V 2>$1 | grep stub_status (查询模块是否安装)
#vim /etc/nginx/conf.d/default.conf (配置状态模块)
server{
location /nginx_status{
stub_status;
allow all;
}
}
#systemctl restart nginx
http://192.168.172.135/nginx_status
7.2随机主页 (random_index_module)
目的:将主页设置成随机页面,是一种微调更新机制
#mkdir /app (创建主页目录)
#touch /app/{blue/html,green,html,red.html,.yellow.html} (创建多个主页)
<html>
<head>
<title>bule color</title>
</head>
<body style="background-color:blue">
<h1>blue color!</h1>
</body>
</html>
#vim /etc/nginx/conf.d/default.conf (启动随机主页)
location / {
root /app;
random_index on;
}
#systemctl restart nginx (刷新主页,观察变化)
7.3替换模块(sub_module)
目的:网页内容替换
#vim /etc/nginx/conf.d/default.conf
server{
sub_filter nginx 'test' #替换模块,将nginx替换成test
sub_filter_once on; #单次替换,开启
location / {
root /usr/share/nginx/html;
index index.html index.html;
}
}
#重启服务器,测试页面,可以看到只替换了一处
7.4文件读取(ngx_http_core_module)
语法:
Syntax: sentfile on | off;
Default: sentfile off;
Context: http,server,location,if in location
Syntax: tcp_nopush on | off;
Default: tcp_nopush off;
Context: http,server,location
Syntax: tcp_nopush on | off;
Default: tcp_nopush on;
Context: http,server,location
启用模块:
#vim /etc/nginx/conf.d/default.conf
location / video{
sendfile on;
tcp_nopush on;
}
#默认启动,无需验证
7.5文件压缩(ngx_http_gzip_module)
原理:启动该模块,是文件传输前进行压缩,提升传输效率
语法:
Syntax: gzip on | off;
Default: gzip off;
Context: http,server,location,if in location
Syntax: gzip_comp_level level;
Default: gzip_comp_leve 1;(1~9)
Context: http,server,location
Syntax: gzip_http_version 1.0 | 1.1;
Default: gzip_http_version 1.1;
Context: http,server,location
启用模块
(1)观察未压缩传输
拷贝图片至网站主目录 /usr/share/nginx/html/
拷贝tar包至网站主目录
拷贝文本至文件主目录
通过浏览器下载文件并观察下载后大小
(2)启用压缩功能
#vim /etc/nginx/nginx.conf
http{
gip on;
gzip_http_version 1.1; #版本
gzip_comp_level 2; #级别1-9
gzip_types text/plain application/javascript application/x-javascript text/css
application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #可以压缩的内容
gzip_static on;
}
#systemctl restart nginx
(3)观察压缩传输
注意缓存,压缩包和图片类对象本身已经自带压缩功能,所以压缩比例较小,文本类对象在压缩试验中,压缩比例体现优越,再通过浏览器下载文件并观察下载后的大小。
7.6页面缓存(ngx_http_headers_module)
expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求要配置expires,可以在http段中或者server段中或者location段中加入。
原理介绍:无缓存,每次访问服务器,均是全文传输。开启缓存可以加速浏览网站。
语法:
Syntax: expires [modified] time;
expires epoch | max | off;
Default: expires off;
Context: http,server,location,if in location
开启服务器缓存模块
#vim /etc/nginx/conf.d/default.conf
location / {
root /usr/share/nginx/html;
index index.html index.html;
expires 24h;
}
#理解nginx服务器启动缓存时间,加速浏览
7.7防盗链
(1)搭建一个a.com网站
在主页中插入图片,注意要将1.jpg图片拷贝至网站主目录
# vim /etc/nginx/conf.d/a.com.conf
server {
listen 80;
server_name a.com;
access_log /var/log/nginx/a.log main;
location / {
root /a.com;
index index.html;
}
}
#mkdir /a.com
#vim /a.com/index.html
<img src='1.jpg' /> #####注意注意注意:1.jpg的文件要放到a.com下
#在真机上做一下域名解析C:\Windows\System32\drivers\etc\hosts
写入192.168.172.135 a.com b.com
(2)搭建一个b.com网站
在主页中盗链A网站的图片
#vim /etc/nginx/conf.d/b.com.conf
server{
listen 80;
server_name b.com;
access_log /var/log/nginx/b.log main;
location / {
root /b.com;
index index.html;
}
}
#mkdir /b.com
#vim /b.com/index.html
<img src='http://a.com/1.jpg' />
注意:在b.com下并没有1.jpg的文件
(3)访问两个网站页面,均能正常显示图片
(4)注意b.com网站的日志,日志正常/var/log/nginx/b.log
(5)注意a.com网站的日志/var/log/nginx/a.log
日志不正常,日志莫名其妙产生了,观察referer字段,发现被盗链了
(6)启动a.com防盗链功能
location / {
root /a.com;
index index.html index.htm; valid_referers none blodked *.a.com;
if($invalid_referer){
return 403;
}
}
重启一下服务器
(7)再次访问b.com网站,盗链失败
(8)如果希望某些网站能够使用盗链资源
模块:ngx_http_referer_module
启用盗链
location / {
root /a.com;
index index.html index.htm;
valid_referers none blodked *.a.com server_name 192.168.172.* ~tianyun ~\.google\. ~\.baidu\. b.com;
if($invalid_referer){
return 403;
}
}
(9)再次盗链,合法盗链成功