十二周四次课 2018.01.05 Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理

12.13 Nginx防盗链


1.打开默认虚拟主机配置文件

将上节课定义的东西注释掉,然后插入如下内容


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;
}

第一行有一个匹配星号表示后面正则括号里的内容不区分大小写,这一行的意思是请求结果是gif等结尾的

第二行意思:过期时间7天

意思是:访问日志不记录

防盗链是如下部分:


第一行定一个域名白名单。

第二行第三行意思是:如果域名不是白名单里的,那么就会403

2.然后我们保存、检查错误、重新加载,然后测试。



12.14 Nginx访问控制


有比较重要的内容不想被别人访问就可以做一个白名单,只能自己或者指定的ip才能访问。

1.

在如下位置插入内容,(allow后面的是白名单,deny all表示其他的ip全部deny掉,禁止访问)


location /admin/
{
    allow 192.168.133.1;
    allow 127.0.0.1;
    deny all;
}

在apache先allowe和先deny是不一样的,但是在nginx是没有顺序这一说的,但是它有一个特点和apache是不一样的,在apache一个如上图的127ip访问过来,是先allow匹配上了之后还会继续向下然后就又被deny了,但是在nginx里第一条匹配上了之后就直接停止了。

2.保存、-t检查错误、重新加载。

然后我们做一下测试吧。



然后我们新建一个网卡,然后获取ip,在测试一下


如上是针对目录的,我们还可以针对正则匹配文件


禁止解析php

1.

在里面插入如下内容


location ~ .*(abc|image)/.*\.php$
{
        deny all;
}

然后我们保存、-t检查错误、重新加载,之后做一下测试。


下面我们再来看一下根据user_agent限制(不让蜘蛛爬到)

在如下图加入红框里的内容


if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')
{
      return 403;
}

然后我们保存、-t检查错误、重新加载,之后做一下测试。

模拟user_agent访问


想要user_agent忽略大小写就在如下位置加一个星号。


12.15 Nginx解析php相关配置


location ~ \.php$
    {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
    }

1.把如上代码粘贴到虚拟主机配置文件里,-t检查错误、重新加载

然后在里面写入如下内容


如果这里地址写错会502

出现502的时候可以查看一下错误日志

这里的地址其实就是里如下位置的地址


如上图你如果把监听改成ip加端口(就是把白底的一行加上井号,下面一行去掉井号),那么虚拟主机配置文件里也要改如下图


然后重新加载php-fpm和nginx(php-fpm支持reload),然后可以看一下端口:


然后在访问就没问题了。

还有一个地方



如上两个地方也是要对应的。

12.16 Nginx代理


我们新建一个主机配置文件:

server
{
    listen 80;
    server_name ask.apelearn.com;


    location /
    {
        proxy_pass      http://121.201.9.155/;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

如上内容没有root,因为它是一个代理服务器,不需要访问本地服务器上的任何文件。

定义域名

真正的web服务器地址

告诉nginx要访问的是域名是什么,这里$指的是

下面的两行是指定ip以及remote addr和proxy add等

然后我们-t检查错误、重新加载,之后来测试一下吧。(我们访问的文件是robots.txt 一般网站都会有)

如下图 通过本地的ip可以访问到远程的站点,如果没有配置代理服务器是不行的。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值