LNMP架构(二)

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,访问被拒绝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值