Nginx默认虚拟主机
我们先来修改定义配置虚拟主机的配置段
[root@localhost nginx]# vi conf/nginx.conf
将这部分删除
然后在application下添加:
然后到conf下创建vhost
[root@localhost nginx]# cd conf/
[root@localhost conf]# mkdir vhost
然后我们创建一个.com.conf文件
[root@localhost vhost]# vi wyc.com.conf
添加内容如下
server
{
listen 80 default_server; //有这个标记的就是默认虚拟主机
server_name wyc.com;
index index.html index.htm index.php;
root /data/nginx/default;
}
然后我们来创建目录
[root@localhost vhost]# mkdir -p /data/nginx/default
然后写一句话添加到这个目录下面
[root@localhost vhost]# echo "this is a default site." >> /data/nginx/default/index.html
然后我们来检查一下配置文件有没有错
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -t
接下来我们用一个新的命令重新加载配置文件,可以不需要重启
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -s reload
如果出现报错如下
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
说明缺少nginx.pid文件
然后执行
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
再次重新加载就可以解决
然后我们curl执行一下,就会显示我们刚刚定义的index.html文件内容
Nginx用户认证
我们来创建一个虚拟主机
[root@localhost vhost]# vi /usr/local/nginx/conf/vhost/test.com.conf
添加内容如下
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;
}
}
然后我们来生成密码文件
[root@localhost vhost]# htpasswd -c /usr/local/nginx/conf/htpasswd test
密码设置123
如果未找到命令,yum安装一下
[root@localhost vhost]# yum install -y httpd
设置完密码之后重新检查一下配置文件是否正确,并重新加载一下
然后我们curl测试一下
[root@localhost vhost]# curl -x127.0.0.1:80 test.com
提示401,需要我们来指定用户
[root@localhost vhost]# curl -utest:123 -x127.0.0.1:80 test.com
提示404,需要我们来创建一下主目录
[root@localhost vhost]# mkdir -p /data/wwwroot/test.com
然后在这个目录下写一个index文件
[root@localhost vhost]# echo "test.com" > /data/wwwroot/test.com/index.html
然后我们来重新curl执行一下
[root@localhost vhost]# curl -utest:123 -x127.0.0.1:80 test.com
Nginx域名重定向
我们来更改一下配置文件,增加一个域名
[root@localhost vhost]# vi test.com.conf
修改内容如下
server
{
listen 80;
server_name test.com test2.com test3.com;
index index.html index.htm index.php;
root /data/wwwroot/test.com;
if ($host != 'test.com' ) {
rewrite ^/(.*)$ http://test.com/$1 permanent;
}
}
然后检查一下配置文件是否正确并重新加载一下
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -t
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -s reload
然后curl一下
[root@localhost vhost]# curl -x127.0.0.1:80 test2.com
我们可以看到301,然后我们看跳转到哪儿
[root@localhost vhost]# curl -x127.0.0.1:80 test2.com -I
跳转到test.com
Nginx访问日志
$remote_addr //客户端IP(公网IP)
$http_x_forwarded_for //代理服务器的IP
$time_local //服务器本地时间
$host //访问主机名(域名)
$request_uri //访问的url地址
$status //状态码
$http_referer //referer
$http_user_agent //user_agent
打开主配置文件
[root@localhost vhost]# vi /usr/local/nginx/conf/nginx.conf
然后找到log_format,然后修改成test
下面呢我们需要在虚拟主机配置里定义
[root@localhost vhost]# vi test.com.conf
修改如下
然后检查一下配置文件是否正确并重新加载一下
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -t
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -s reload
然后我们curl访问一下
[root@localhost vhost]# curl -x127.0.0.1:80 test3.com
[root@localhost vhost]# curl -x127.0.0.1:80 test2.com
然后查看一下是否生成日志
[root@localhost vhost]# cat /tmp/test.com.log
Nginx日志切割
首先我们创建一个日志切割脚本
[root@localhost vhost]# vi /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`
我们来针对这两个conf文件进行操作
[root@localhost vhost]# for f in `ls` ; do ls -l $f ;done
我们来可以执行一下这个脚本
-x //执行脚本的过程
[root@localhost vhost]# sh -x /usr/local/sbin/nginx_logrotate.sh
每天都会生成一个日志,我们需要每过段时间都需要做一个清理
[root@localhost vhost]# find /tmp/ -name *.log-* -type f -mtime +7 |xargs rm
写完脚本之后我们还需要加一个任务计划
[root@localhost vhost]# crontab -e
内容如下
0 0 * * * /bin/bash /usr/local/sbin/nginx_logrotate.sh
静态文件不记录日志和过期时间
编辑配置文件
[root@localhost vhost]# vi test.com.conf
添加内容如下
然后检查一下配置文件是否正确并重新加载一下
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -t
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -s reload
然后我们来模拟一个图片
[root@localhost vhost]# vi /data/wwwroot/test.com/1.jpg
[root@localhost vhost]# vi /data/wwwroot/test.com/2.js
在里面随便写一些东西
然后使用curl访问,就可以查看到刚刚写入的内容
[root@localhost vhost]# curl -x127.0.0.1:80 test.com/1.jpg
[root@localhost vhost]# curl -x127.0.0.1:80 test.com/2.js
然后查看日志就可以看到日志内添加了我们刚刚的访问记录
[root@localhost vhost]# cat /tmp/test.com.log
然后我们加上-I,就可以看到有expires
[root@localhost vhost]# curl -x127.0.0.1:80 test.com/2.js -I
Nginx防盗链
编辑配置文件
[root@localhost vhost]# vi test.com.conf
修改内容如下
接下来我们进行测试
首先检查一下配置文件是否正确并重新加载一下
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -t
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -s reload
然后我们使用curl访问一下
[root@localhost vhost]# curl -e "http://www.baidu.com/1.txt" -x127.0.0.1:80 test.com/1.jpg -I
这里可以看到访问403
然后我们来访问一下test来看一下
访问成功,这说明我们防盗链配置成功了
Nginx访问控制
编辑配置文件
[root@localhost vhost]# vi test.com.conf
添加内容如下
检查配置文件是否正确并重新加载一下
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -t
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -s reload
然后使用curl
[root@localhost vhost]# curl -x127.0.0.1:80 test.com/admin/ -I
[root@localhost vhost]# curl -x192.168.100.11:80 test.com/admin/ -I
执行显示200
我们还可以针对正则匹配进行配置
修改如下
然后我们创建一个upload目录
[root@localhost vhost]# mkdir /data/wwwroot/test.com/upload
然后我们再在这个目录里创建一个php文件
[root@localhost vhost]# echo "111" > /data/wwwroot/test.com/upload/1.php
curl访问一下
[root@localhost vhost]# curl -x127.0.0.1:80 test.com/upload/1.php
出现403,访问被拒绝