域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割

域名重定向

给博客配置第二个域名:www.jinshui.com
先给域名解析过来(此示例是本地演示直接配置的本地的hosts)

vi /etc/nginx/conf.d/blog.jinshui.cc.conf

在 server_name 那一行的域名后面再加一个域名,空格作为分隔。
域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第1张图片

nginx -t
nginx -s reload

此时去访问www.jinshui.com就能打开博客了
域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第2张图片
301域名重定向(永久重定向):
从域名blog.jinshui.cc跳转到域名www.jinshui.com

vi /etc/nginx/conf.d/blog.jinshui.cc.conf //增加:
    if ( $host = blog.jinshui.cc )
    {
      rewrite /(.*)  http://www.jinshui.com/$1 permanent;
      }

域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第3张图片

nginx -t
nginx -s reload

浏览器测试此时已经完成了301跳转

Linux机器里测试:

curl -x127.0.0.1:80 -I blog.jinshui.cc/1.txt   (-x指定他访问的IP和端口,域名是blog.jinshui.cc/1.txt,加-I 指定只看他的header信息)

测试结果显示状态码是301,完成从域名blog.jinshui.cc跳转到域名www.jinshui.com
域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第4张图片
临时重定向
定义重定向的时候
rewrite /(.*) http://www.jinshui.com/$1 permanent; 里面的permanent设置的是301永久重定向
如果是302临时重定向则是redirect
比如把1.txt临时重定向到2.txt

rewrite /1.txt /2.txt redirect;

域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第5张图片

nginx -t
nginx -s reload

来做个测试:

curl -x127.0.0.1:80 -I www.jinshui.com/1.txt

结果显示状态码是302了,也跳到2.txt了
域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第6张图片
补充:
状态码:200(OK) 404(不存在) 304(缓存) 301(永久重定向) 302 (临时重定向)

如果是域名跳转,用301; 如果不涉及域名跳转用302

用户认证

用户认证的目的:
针对一些重要的目录(后台地址)实现二次认证

配置用户认证:

先准备好用户认证的用户名和密码,用htpasswd命令
yum install -y httpd-tools 没有htpasswd命令就用yum安装一下httpd-tools包

htpasswd -c /etc/nginx/user_passwd user1   (-c是生成密码文件,/etc/nginx/user_passwd是这个生成的文件的目录,user1是用户名)

然后设置密码

域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第7张图片
user1创建成功:
在这里插入图片描述
这里如果要继续生成一个用户user2就不要用-c(-c是生成新文件的),用-m,(m是指加密算法)

htpasswd -m /etc/nginx/user_passwd user2

可以看到user2也创建成功了
域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第8张图片
vi 配置文件
vi /etc/nginx/conf.d/blog.jinshui.cc.conf 添加:

location ~ wp-login.php 
{ 
    auth_basic "Auth"; 
    auth_basic_user_file /etc/nginx/user_passwd; 
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /data/wwwroot/blog.jinshui.cc$fastcgi_script_name;
    include        fastcgi_params;
}

域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第9张图片
补充:
nginx location优先级:
location / 优先级比 location ~ 要低
也就是说,如果一个请求(如,aming.php)同时满足两个location

location /amin.php
location ~ *.php$

会选择下面的
nginx location 文档: https://github.com/aminglinux/nginx/tree/master/location

Nginx访问日志

Nginx访问日志:
就是用户访问网站的记录。

配置访问日志:
主配置文件:vi /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"';

域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第10张图片

虚拟主机配置文件:vi /etc/nginx/conf.d/blog.jinshui.cc.conf

#access_log /log/to/path main; 改为
access_log /data/logs/blog.access.log main; 日志格式
mkdir -p /data/logs(如果没有/data/logs这个目录就先创建一个)
域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第11张图片

nginx -t 检查
nginx -s reload 重载
此时去访问我们的网站就会生成访问日志了
域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第12张图片
nginx内置变量: https://github.com/aminglinux/nginx/blob/master/rewrite/variable.md

日志不记录静态文件

日志里面不记录静态文件:
在访问日志里,过滤掉一些图片、js、css类的请求日志。因为这样的请求日志没有多大用,而且会占用很大的磁盘空间

如何配置?
在虚拟主机配置文件里增加配置:

 location ~* \.(png|jpeg|gif|js|css|bmp|flv)$
    {
    access_log off;
     }

域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第13张图片

nginx -t
nginx -s reload
补充:
tail -f /data/logs/bbs.access.log //-f选型可以动态查看一个文件的内容
> 可以清空一个文件内容,如:> /data/logs/blog.access.log 清空这个日志文件的里的内容
~* 表示不区分大小写的匹配 后面跟正则表达式 .表示任意一个字符

Nginx日志切割

为什么要做日志切割?
/data/logs/ 里面有很多访问日志。 如果日志越来越大,可能有一天会把整个磁盘写满。你可以想象一下一个日志有100G
你如何查看这个日志? cat less tail vi

系统里有一个日志切割的服务
logrotate 工具
配置文件: /etc/logrotate.conf
子配置文件:/etc/logrotate.d/*

Nginx的日志切割配置文件:
/etc/logrotate.d/nginx
vi 编辑Nginx的日志切割配置文件
vi /etc/logrotate.d/nginx

内容:

/var/log/nginx/*.log /data/logs/*.log 
{ 
daily
dateext
missingok
rotate 7
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}

域名重定向、用户认证、Nginx访问日志、日志不记录静态文件、Nginx日志切割_第14张图片

测试执行:

logrotate -vf /etc/logrotate.d/nginx

你可能感兴趣的:(学习笔记)