给博客配置第二个域名:www.jinshui.com
先给域名解析过来(此示例是本地演示直接配置的本地的hosts)
vi /etc/nginx/conf.d/blog.jinshui.cc.conf
在 server_name 那一行的域名后面再加一个域名,空格作为分隔。
nginx -t
nginx -s reload
此时去访问www.jinshui.com就能打开博客了
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 -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
临时重定向
定义重定向的时候
rewrite /(.*) http://www.jinshui.com/$1 permanent;
里面的permanent设置的是301永久重定向
如果是302临时重定向则是redirect
比如把1.txt临时重定向到2.txt
rewrite /1.txt /2.txt redirect;
nginx -t
nginx -s reload
来做个测试:
curl -x127.0.0.1:80 -I www.jinshui.com/1.txt
结果显示状态码是302了,也跳到2.txt了
补充:
状态码: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是用户名)
然后设置密码
user1创建成功:
这里如果要继续生成一个用户user2就不要用-c(-c是生成新文件的),用-m,(m是指加密算法)
htpasswd -m /etc/nginx/user_passwd user2
可以看到user2也创建成功了
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 location优先级:
location /
优先级比 location ~
要低
也就是说,如果一个请求(如,aming.php)同时满足两个location
location /amin.php
location ~ *.php$
会选择下面的
nginx location 文档: https://github.com/aminglinux/nginx/tree/master/location
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"';
虚拟主机配置文件: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 -t 检查
nginx -s reload 重载
此时去访问我们的网站就会生成访问日志了
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 -t
nginx -s reload
补充:
tail -f /data/logs/bbs.access.log //-f选型可以动态查看一个文件的内容
> 可以清空一个文件内容,如:> /data/logs/blog.access.log 清空这个日志文件的里的内容
~* 表示不区分大小写的匹配 后面跟正则表达式 .表示任意一个字符
为什么要做日志切割?
/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
}
测试执行:
logrotate -vf /etc/logrotate.d/nginx