2018-7-4 笔记

2018-7-4 笔记

12.7 默认虚拟主机

1.修改主机配置文件:添加以下一行

include vhost/*.conf   //意思是/usr/local/nginx/conf/vhost/下面所以以.conf结尾的文件都会被加载

2.在conf目录下创建vhost目录并写一个.conf配置文件

mkdir vhost 

vim /vhost/default.conf

3.在default.conf配置文件写入以下内容

server
{
listen 80 default_server;   //default标记默认虚拟主机
server_name aaa.com;      //域名
index index.html index.htm index.php;   //支持的解析
root /data/nginx;    //访问那个页面

}

4.检查语法

    /usr/local/nginx/sbin/nginx -t

5.创建data和nginx目录

mkdir data 

mkdir nginx

6.在nginx目录写入一个html

vim index.html 

           this is a test!

7.重新加载配置文件

    /usr/local/nginx/sbin/nginx -s reload

8.测试

curl localhost 

12.8 Nginx用户认证

1.创建多一个虚拟主机配置

    vim/usr/local/nginx/conf/vhost/test.conf

添加如下配置:

           server
{
listen 80;
server_name test.com;   
index index.html index.html index.php;
root /data/nginx1;

location/                            //指定要做用户认证目录、文件、html
{
auth_basic  "Auth";    //打开认证
auth_basic_user_file /usr/local/nginx/conf/vhost/htpasswd;   //指定密码文件
}
}

/usr/local/nginx/sbin/nginx -t 检查语法 

yum install -y httpd   //安装httpd,因为要借用httpd生成密码文件

find  /  -name htpasswd  //查找htpasswd工具在哪

/usr/bin/htpasswd   //一般yum安装得再这里

/usr/bin/htpasswd -c /usr/local/nginx/conf/vhost/htpasswdtest  // 生成密码文件,输入密码

mkdir nginx1  创建站点目录

cd  nginx1                                  echo “this is  test”> index.html  //写入内容

/usr/local/nginx/sbin/nginx -s reload //重新加载配置文件

curl -x127.0.0.1:80 test.com -utest:test    //测试   -u 输入账号密码

12.9 Nginx域名重定向

类似httpd的域名跳转

在原先用户认证上添加配置:如下

server
{
listen 80;
server_name test.com test1.com test2.com ;
index index.html index.html index.php;
root /data/nginx1;

 


if ($host != 'test.com' ){      //如果host不等于则rewrite
rewrite ^/(.*)$ http://test.com/$1 permanent;   // ^任意开头(比如httpd://)  (.*)通配 $到结尾
}

}

permanent 表示永久重定向 (301)  redirect临时重定向(302)

/usr/local/nginx/sbin/nginx -t  

/usr/local/nginx/sbin/nginx  -s reload

curl -I -x127.0.0.1:80 test1.com  //测试下图可以看到location跳转到 test.com

12.10 Nginx访问日志

1.首先我们进入cat /usr/local/nginx/conf/nginx.conf 里面 下图是定义格式//这里log_format 我定义了etc(可以随意定义)

相对应参数意义

2.然后再配置文件添加配置

vim /usr/local/nginx/conf/vhost/test.conf 

    添加:

                access_log/nginx_log/nginx.log  etc;

定义日志存放路径, 后面跟格式名就是刚才在nginx.conf里面定义的log_format ,不定义会默认日志格式

3./usr/local/nginx/sbin/nginx -t 

    /usr/local/nginx/sbin/nginx -sreload    

4.测试

        curl-I -x127.0.0.1:80 test1.com 

查看日志:

        cat/nginx_log/nginx.log     //可以下图相对应的就是nginx.conf设置的格式

12.11 Nginx日志切割

要想切割nginx日志需要借助系统的切割工具或者自定义脚本

下面示例自定义脚本切割+任务计划实现

  1.  创建一个脚本文件  //脚本最好都放在/usr/local/sbin下

           vim /usr/sbin/nginx_log_rotate.sh

#! /bin/bash
d=`date -d "-1 day" +%Y%m%d`     //定义变量

 
logdir="/nginx_log/"                          //指定日志切割路径
nginx_pid="/usr/local/nginx/logs/nginx.pid"      //指定pid
cd $logdir
for log in `ls *.log`
do
mv $log$log-$d                                //把原先的日志做个改名
done
/bin/kill -HUP `cat$nginx_pid`            

     2. 运行脚本   //加个-x查看过程

            sh-x /usr/sbin/nginx_log_rotate.sh

    3.查看日志有没有生效

    cd /nginx_log | ls

    4.指定任务计划

    0 0 * * *  /bin/bash/usr/sbin/nginx/nginx_log_rotate.sh  每天凌晨运行此脚本

12.12 静态文件不记录日志和过期时间

1.在虚拟主机配置文件添加以下配置:

            location~ .*\.(gif|jpg|jpeg|png|bmp|swf)$       //匹配
{
expires 7d;                               //缓存时间
access_log off;
}
location ~ .*\.(js|css)$
{
expires  12h;
access_log off;

}

2.    /usr/local/nginx/sbin/nginx -t

        /usr/local/nginx/sbin/nginx -s reload

3. curl -x127.0.0.1:80 test.com/1.jpg  可以看到以下图没记录,当我输入jpgass就有记录了,证明生效

4.curl -x127.0.0.1:80 test.com/1.jpg -I   //查询缓存时间  max-age=604800 等于7天也生效了

 12.13Nginx防盗链

vim /usr/local/nginx/conf/vhost/test.com

1.添加如下配置:

         location~* ^.+\.(gif|jpg|jpeg|png|bmp|swf)$    //定义格式
        {
                expires 7d;                           //缓存时间
                valid_referers noneblocked server_names*.etc.com;                   //白名单
                if ($invalid_referer){                               条件
                return403;                                           返回结果
               }        
                access_log off;
        }

2.    /usr/local/nginx/sbin/nginx -t  

        /usr/local/nginx/sbin/nginx -s reload

3.测试

        curl -e"http://www.aaa.com"  -x127.0.0.1:80 test.com/1.jpg -I

    curl -e “http://www.etc.com”-x127.0.0.1:80  test.com/1.jpg -I

12.14 Nginx访问控制

和httpd一样,Nginx也需要限制某些IP不能访问或者只允许某些IP访问。和httpd不一样,他没有order顺序。

1.vim /usr/local/nginx/conf/vhost/test.com

                   添加如下配置

    location /admin/
{
allow 193.168.142.5;      //允许访问的IP
allow 127.0.0.1;
denyall;                     //除了以上2个IP,其他全部拒绝

}

2.

        /usr/local/nginx/sbin/nginx -t  

        /usr/local/nginx/sbin/nginx -s reload

3.测试

curl -x192.168.214.128:80 test.com/admin/                //这个没加入白名单所以被拒绝了

curl -x127.0.0.1:80 test.com/admin/                //这个加入了白名单可以访问

如果你只想配置黑名单,只需要填写deny IP地址 就行了!

还有一种跟httpd类似的禁止PHP解析(一般用在图片上传目录)

1..vim /usr/local/nginx/conf/vhost/test.com

2.添加如下配置:

    location~.*(abc|zxc)/.*\.php$    //表示匹配abc或者zxc目录,并且.*PHP的请求拒绝访问
        {
        deny all;

        }

3.创建    

    mkdir  abc ;echo "1111">abc/1.php

4.

        /usr/local/nginx/sbin/nginx -t  

        /usr/local/nginx/sbin/nginx -s reload

5.测试:

curl -x127.0.0.1:80 test.com/abc/1.php
通过user_agent来进行限制

1..vim /usr/local/nginx/conf/vhost/test.com

2.添加配置

     if ($http_user_agent ~'abc|qwe|zxc')   //匹配abc、qwe、zxc的字符串都会拒绝
        {
                return 403;

        }

3.

        /usr/local/nginx/sbin/nginx -t  

        /usr/local/nginx/sbin/nginx -s reload

4.测试:

curl -A "abc" -x127.0.0.1:80 test.com      //失败

curl -A “asdqwdwq” -x127.0.0.1 test.com   //成功

12.15 Nginx解析php相关配置


在LAMP中,PHP是作为httpd的一个模块出现,只要PHP模块被加载,那么就能解析PHP脚本了,而在LANP中,PHP是以一个服务(php-fpm)的形式存在的,首先要启动php-fpm服务,然后nginx再和php-fpm通信,也就是说,处理PHP脚本解析的工作是由php-fpm来完成的,nginx仅仅是一个搬运工,它把用户的请求传递给php-fpm,php-fpm处理完成后把结果传递回给nginx,nginx再把结果返回给用户。

1.vim /usr/local/nginx/conf/vhost/test.com

2.添加如下配置:

        location~ \.php$
{
include fastcgi_params;                
fastcgi_pass unix:/tmp/php-fcgi.sock;    \\指定PHP-fpm的地址,如果监听是tcp:port就要写tcp:port
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/nginx1$fastcgi_script_name;  \\指定站点目录

}

3.

        /usr/local/nginx/sbin/nginx -t  

        /usr/local/nginx/sbin/nginx -s reload

4.创建一个php文件进行测试

        vim 1.php

           <?php

                   phpinfo();

5.测试:

    curl -x127.0.0.1:80 test.com/1.php

12.16 Nginx代理

1.创建一个配置文件

    cd /usr/local/nginx/conf/vhost/

    vim daili.conf

           添加以下内容

                server
{
listen 80;      //端口
server_name ask.apelearn.com;   //域名

location /
{
proxy_pass http://223.94.95.10/;       //代理的服务器IP
proxy_set_header Host $host;           //表示后端web的域名要与上面server_name域名保持一致
proxy_set_header X-Real-IP $remote_addr;         //定义发往后端web服务器的请求头的客户端IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            //定义发往后端web服务器的请求头的代理服务器的IP

}

4.

         /usr/local/nginx/sbin/nginx -t  

        /usr/local/nginx/sbin/nginx -s reload

5.测试

curl -x127.0.0.1:80 ask.apelearn.com -I


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值