4.默认虚拟主机
(1)编辑配置文件
[root@lnmp nginx]# vim conf/nginx.conf
将选中部分全部删除
在application下面添加代码
Include vhost/*.conf;
(2)创建vhost文件
[root@lnmp nginx]# cd conf/
[root@lnmp conf]# mkdir vhost
编辑一个.com.conf文件
添加以下内容
[root@lnmp vhost]# vim qjq.com.conf
· server
· {
· listen 80 default_server; //有这个标记的就是默认虚拟主机
· server_name wyc.com;
· index index.html index.htm index.php;
· root /data/nginx/default;
· }
(3)创建目录
[root@lnmp vhost]# mkdir -p /data/nginx/default
在这个目录下写一段话
[root@lnmp vhost]# echo "this is a default site." >> /data/nginx/default/index.html
(4)检查一下文件是否出错
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
(5)用一个新的命令重新加载配置文件,可以不需要重启
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -s reload
(6)curl命令运行一下
[root@lnmp vhost]# curl localhost
5.Nginx用户认证
(1)创建一个虚拟主机
添加以下代码
server
{
listen 80;
server_name test.com;
index index.html index.htm index.php;
root /data/wwwroot/test.com;
location /
{
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}
}
(2)生成密码
[root@lnmp vhost]# htpasswd -c /usr/local/nginx/conf/htpasswd test
如果没有htpasswd命令
安装htpp插件
[root@lnmp vhost]# yum install -y httpd
(3)重新加载配置,检查文件是否出错
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -s reload
(4)curl命令测试一下
[root@lnmp vhost]# curl -x127.0.0.1:80 test.com
提示401,需要指定用户
[root@lnmp vhost]# curl -utest:123 -x127.0.0.1:80 test.com
提示404,缺少主目录,需要创建主目录
[root@lnmp vhost]# mkdir -p /data/wwwroot/test.com
在这个目录下写一个index.com文件
[root@lnmp vhost]# echo "test.com" > /data/wwwroot/test.com/index.html
(5)curl命令运行一下
[root@lnmp vhost]# curl -utest:123 -x127.0.0.1:80 test.com
6.Nginx域名重定向
(1)修改配置文件
[root@lnmp vhost]# vi test.com.conf
将配置文件改成下面这样
(2)检查配置文件是否正确并重新加载一下
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -s reload
(3)curl命令运行一下
[root@lnmp vhost]# curl -x127.0.0.1:80 test2.com
可以看到提示301,查看一下跳转到哪了
[root@lnmp vhost]# curl -x127.0.0.1:80 test2.com -I
7.访问日志
(1)主配置文件内容
· $remote_addr //客户端IP(公网IP)
· $http_x_forwarded_for //代理服务器的IP
· $time_local //服务器本地时间
· $host //访问主机名(域名)
· $request_uri //访问的url地址
· $status //状态码
· $http_referer //referer
· $http_user_agent //user_agent
(2)修改配置文件
[root@lnmp vhost]# vim /usr/local/nginx/conf/nginx.conf
查找log_format,将comdine_realip改成test。
(3)虚拟主机配置里定义
[root@lnmp vhost]# vim test.com.conf
添加代码access_log /tmp/test.com.log test;
(4)检查配置文件是否正确并重新加载一下
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -s reload
(5)curl命令运行一下
[root@lnmp vhost]# curl -x127.0.0.1:80 test3.com
[root@lnmp vhost]# curl -x127.0.0.1:80 test2.com
(6)查看一下日志
[root@lnmp vhost]# cat /tmp/test.com.log
8.日志分割
(1)创建一个日志切割脚本
[root@lnmp ~]# vim /usr/local/sbin/nginx_Logrotate.sh
添加下面代码
· #! /bin/bash
· ## 假设nginx的日志存放路径为/data/logs/
· d=`date -d "-1 day" +%Y%m%d`
· logdir="/tmp/"
· nginx_pid="/usr/local/nginx/logs/nginx.pid"
· cd $logdir
· for log in `ls *.log`
· do
· mv $log $log-$d
· done
· /bin/kill -HUP `cat $nginx_pid`
(2)针对这两个conf文件进行操作
[root@lnmp vhost]# for f in `ls` ; do ls -l $f ;done
(3)-x //执行脚本的过程
(4)每天都会生成一个日志,我们需要每过段时间都需要做一个清理
[root@lnmp vhost]# find /tmp/ -name *.log-* -type f -mtime +7 |xargs rm
操作失败是因为没有符合要求的文件的
(5)加一个任务计划
[root@lnmp vhost]# crontab -e
写入代码
0 0 * * * /bin/bash /usr/local/sbin/nginx_logrotate.sh
9.静态文件不记录日志和过期时间
(1)修改配置文件
[root@lnmp vhost]# vi test.com.conf
将下面代码添加进去
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d;
access_log off;
}
location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
}
(2)检查配置问价那时候正确并重新加载一下
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -s reload
(3)模拟一个图片
[root@lnmp vhost]# vim /data/wwwroot/test.com/1.jpg
[root@lnmp vhost]# vim /data/wwwroot/test.com/2.js
随便写点东西,curl命令运行一下
[root@lnmp vhost]# curl -x127.0.0.1:80 test.com/1.jpg
[root@lnmp vhost]# curl -x127.0.0.1:80 test.com/2.js
[root@lnmp vhost]# curl -x127.0.0.1:80 test.com/indx.html
[root@lnmp vhost]# curl -x127.0.0.1:80 test.com/index.html
(4)通过查看日志可以发现添加了我们刚才的访问记录
[root@lnmp vhost]# cat /tmp/test.com.log
(5)curl命令加上-I,就可以看到有expires
[root@lnmp vhost]# curl -x127.0.0.1:80 test.com/2.js -I
10.Nginx防盗链
(1)修改配置文件
[root@lnmp vhost]# vi test.com.conf
将下面内容添加进去
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
expires 7d;
valid_referers none blocked server_names *.test.com ;
if ($invalid_referer) {
return 403;
}
access_log off;
}
(2)检查配置文件是否正确并重新加载一下
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -s reload
(3)使用curl命令访问一下
[root@lnmp vhost]# curl -e "http://www.baidu.com/1.txt" -x127.0.0.1:80 test.com/1.jpg -I
提示403,访问失败
用test访问一下
[root@lnmp vhost]# curl -e "http://www.test.com/1.txt" -x127.0.0.1:80 test.com/1.jpg -I
访问成功,说明我们的防盗链配置成功了。
11.Nginx访问控制
(1)修改配置文件
[root@lnmp vhost]# vi test.com.conf
添加以下代码
location /admin/
{
allow 127.0.0.1;
allow 192.168.200.20;
deny all;
}
(2)检查配置文件是否正确并重新加载一下
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
[root@lnmp vhost]# /usr/local/nginx/sbin/nginx -s reload
(3)curl命令访问一下
[root@lnmp vhost]# curl -x127.0.0.1:80 test.com/admin/ -I
[root@lnmp vhost]# curl -x192.168.200.20:80 test.com/admin/ -I
状态码为200
(4)针对正则匹配进行配置
修改配置文件
(5)创建一个目录
[root@lnmp vhost]# mkdir /data/wwwroot/test.com/upload
在这里创建一个php文件
[root@lnmp vhost]# echo "111" > /data/wwwroot/test.com/upload/1.php
进行访问。状态码提示403不允许访问。
将php文件改成txt文件就可以访问了