Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146761
  • 博文数量: 70
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 770
  • 用 户 组: 普通用户
  • 注册时间: 2017-11-04 11:19
文章分类

全部博文(70)

文章存档

2018年(69)

2016年(1)

我的朋友

分类: LINUX

2018-08-20 09:14:20

Nginx防盗链配置

有些时候,大家不想让别人调用自己的图片,一是因为个人版权的问题,再一点就是会增加服务器的负载、还会产生一些没必要的流量。

其实在Nginx里面,很容易就做到防盗链的,在nginx.conf文件加入一个localtion配置项。

下面请看配置:

location ~ .*\.(jpg|jpeg|JPG|png|gif|icon)$ { valid_referers blocked  qixing318.com; if ($invalid_referer) { return 404;
        }
}

gif|jpg|jpeg|….,这些是你想要屏蔽的文件类型,可以根据情况修改。

只需要把文中 qixing318.com 修改为你允许显示你网站图片的其他网站域名,注意中间用空格分开,而不是逗号。

这样直接返回的是404页面。也可以用,显示给盗链者看到的图片,注意不要放到自己的域名上,因为放盗链的作用,那样对方是看不到的,可以上传到一些支持外联的网络相册上。

当然了,也可以设置某个目录防盗链,只需把localtion匹配的改成一个目录就可以了,比如:

location ~ ^/images/ { valid_referers none blocked  qixing318.com; if ($invalid_referer) { return 404;
	} #rewrite ^/ 
}

这样就对images这个目录设置防盗链了。


一、基于Basic Auth认证

Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后才能正确的访问网站。

我们使用htpasswd来生成密码信息,首先要安装httpd-tools,在httpd-tools中包含了htpasswd命令。

1
yum install -y httpd-tools

接下来我们就可以创建用户和密码了,例如创建一个loya的用户,执行命令:

1
htpasswd -c /opt/nginx/.htpasswd loya

按照提示输入两次密码之后就创建成功了,然后再修改Nginx的配置,编辑/opt/nginx/conf/vhosts/,在配置后面添加两行配置:

1
2
3
4
5
server {
  ....
  auth_basic "Restricted";
  auth_basic_user_file /opt/nginx/.htpasswd;
}

reload nginx后生效

1
/opt/nginx/sbin/nginx -s reload

二、基于IP的访问控制

通过IP进行访问控制基于nginx模块ngx_http_access_module,

1.模块安装

nginx中内置ngx_http_access_module,除非编译安装时指定了–without-http_access_module,当然一般没人这么干吧。

2.指令

allow

语法: allow address | CIDR | unix: | all;

默认值: -

配置段: http, server, location, limit_except

允许某个ip或者一个ip段访问。如果指定unix:,那将允许socket的访问,unix在1.5.1才新加入。

deny

语法: deny address | CIDR | unix: | all;

默认值: -

配置段: http, server, location, limit_except

禁止某个ip或者一个ip段访问.如果指定unix:,那将禁止socket的访问,unix在1.5.1才新加入。

3.示例








location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}



从上到下的顺序,类似iptables。匹配到了便跳出。如上的例子先禁止了192.16.1.1,接下来允许了3个网段,其中包含了一个ipv6,最后未匹配的IP全部禁止访问.

被deny的将返回403状态码。


nginx解析php


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


  • fastcgi_pass 用来指定php-fpm监听的地址或者socket
  • fastcgi_index index.php #设定访问根目录默认去找的文件
  • fastcgi_param SCRIPT_FILENAME /data/www/test02$fastcgi_script_name #设置访问根目录时默认寻找的文件
  • fastcgi_param SCRIPT_FILENAME /data/www/test02/abc$fastcgi_script_name #访问根目录
    会去默认寻找abc中index.php文件,而此时去访问这个index.php文件是寻找不到的只能通过根目录去访问
    abc/index.php 返回404

    • 查看/usr/local/php-fpm/etc/php-fpm.conf

    pid = /usr/local/php-fpm/var/run/php-fpm.pid
    error_log = /usr/local/php-fpm/var/log/php-fpm.log
    [www]
    listen = /tmp/php-fcgi.sock
    ;listen = 127.0.0.1:9000
    listen.mode = 666
    user = php-fpm
    group =php-fpm
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 20
    pm.min_spare_servers =5
    pm.max_spare_servers = 35
    pm.max_requests = 500
    rlimit_files = 1024


    此文件设定了nginx 绑定的位置去给php-fpm解析

    阅读(1580) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~