12-1 12 防盗链 访问控制 php解析 代理

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

12.13 Nginx防盗链

12.14 Nginx访问控制

12.15 Nginx解析php相关配置

12.16 Nginx代理

扩展

  1. 502问题汇总 http://ask.apelearn.com/question/9109
  2. location优先级 http://blog.lishiming.net/?p=100

12.13 Nginx防盗链

用来禁止来自非本网站的资源访问请求,可以保护服务器不为别的网站请求做响应

[root@axiang-02 ~]# cd /usr/local/nginx/
[root@axiang-02 nginx]# vim conf/vhost/ccc.conf 
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$  匹配
~*表示不区分大小写,^.+表示任意字符
{expires 7d;valid_referers none blocked server_names  *.ccc.om ;    //定义白名单,不匹配403if ($invalid_referer) {return 403;  }access_log off;
}

也可以和之前的配置结合起来,多次定义有优先级的问题要注意,参考扩展

测试

[root@axiang-02 vhost]# curl -x127.0.0.1:80 ccc.com/1.gif
asfoawnfnasxojfan
[root@axiang-02 vhost]# curl -e "http://www.baidu.com/1.txt" -x127.0.0.1:80 ccc.com/1.gif
#-e表示指定指定refer 必须是“http://~~格式”<head><title>403 Forbidden</title></head>  403表示防盗链成功 

12.14 Nginx访问控制

如果发现有来自某个固定IP,其访问请求不太像人类行为,可以通过访问控制拒绝为之服务 访问控制还可以创建只允许内网IP访问的网站资源

需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下:

目录访问控制

    location /kongzhi/{allow 127.0.0.1;deny all;}mkdir kongzhi 
vim kongzhi/1.php 
echo “test,test”>/data/wwwroot/ccc.com/kongzhi/2.html -t && -s reload
curl -x127.0.0.1:80 ccc.com/kongzhi/2.html -I 
curl -x192.168.83.138:80 ccc.com/kongzhi/2.html -I 
HTTP/1.1 403 Forbidden
[root@axiang-02 nginx]# curl -x127.0.0.1 ccc.com/kongzhi/2.html -I
curl: (7) Failed connect to 127.0.0.1:1080; 拒绝连接  //没有指定端口也不行
[root@axiang-02 nginx]# curl -x127.0.0.1:80 ccc.com/kongzhi/2.html -I
HTTP/1.1 200 OK

页面访问控制

  1. 可以匹配正则,限制含有某些字符的目录下的php文件。
  2. 根据user_agent限制
server
{listen 80;server_name aaa.com;index index.html index.htm index.php;    root /data/wwwroot/aaa.com;location ~ .*(upload|image)/.*\.php$ /    //表示匹配包含upload或image字符的目录下的php{deny all;}if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')    //表示匹配agent为Spider/3.0|YoudaoBot|Tomato的拒绝访问{return 403;}
}
  • deny all和return 403效果一样

  • 匹配符号~ *可以不区分大小写

12.15 Nginx解析php相关配置

之前的主配置文件中,删除service的部分含有php解析的代码。改为include后,需要重新添加到各个虚拟主机

[root@axiang-02 php-fpm]# cd /usr/local/nginx/conf/vhost/
[root@axiang-02 vhost]# ls
aaa.conf  bbb.conf  ccc.conf  ld.conf  proxy.conf  ssl.conf
[root@axiang-02 vhost]# vi aaa.conf  
[root@axiang-02 vhost]# cat aaa.conf 
server
{
listen 80;  
server_name aaa.com;
index index.html index.htm index.php;
root /data/wwwroot/aaa.com;location ~ .*(upload|image)/.*\.php$
{allow 127.0.0.1;
allow 192.168.83.1;
deny all;
}
if ($http_user_agent ~* 'Spider/3.0|YoudaoBot|Tomato')
{return 403;
}
location ~ \.php$  //php解析核心配置
{
include fastcgi_params;  fastcgi_pass unix:/tmp/php-fcgi.sock;   //这里要指定正确
#fastcgi_pass 127.0.0.1:9000;    //也可以监听ip端口。不用来与外网交互,只在本机监听进程fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /data/wwwroot/aaa.com$fastcgi_script_name;
}
}

测试

[root@axiang-02 vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/aaa/aaa.php
this is aaa.com 
[root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/reupload/aaa.php
<?php echo "this is aaa.com"; ?>    //做了访问控制的目录即使通过访问请求,也仍然不能解析php
  • sock监听错误

    [root@axiang-02 vhost]# vim aaa.conf

fcgi故意写错为cgi再测试

[root@axiang-02 vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/aaa/aaa.php<head><title>502 Bad Gateway</title></head>  出现502坏访问网关

查看错误日志(主配置文件里有定义位置,注意是nginx_error.log 把级别改为debug更详细)

[root@axiang-02 vhost]# vi /usr/local/nginx/conf/nginx.conf
[root@axiang-02 vhost]# tail /usr/local/nginx/logs/nginx_error.log
2017/08/09 17:40:37 [crit] 2966#0: *31 connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: aaa.com, request: "GET HTTP://aaa.com/aaa/aaa.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "aaa.com"

看到提示,php-cgi.sock不存在,说明nginx与php-fpm需要指向正确的 sock文件进行交互

[root@axiang-02 vhost]# ls /usr/local/php-fpm/etc/php-fpm.d/
axiang.conf  www.conf
[root@axiang-02 vhost]# cat !$www.conf
cat /usr/local/php-fpm/etc/php-fpm.d/www.conf[www]
listen = /tmp/php-fcgi.sock  
#listen = 127.0.0.1:9000
listen.mode = 666
  • IP端口监听

改为监听IP和端口

[root@axiang-02 vhost]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf[www]
#listen = /tmp/php-fcgi.sock
listen = 127.0.0.1:9000
listen.mode = 666[root@axiang-02 vhost]# /usr/local/php-fpm/sbin/php-fpm -t
[root@axiang-02 vhost]# /etc/init.d/php-fpm reload
[root@axiang-02 vhost]# netstat -lntp  //查看9000端口tcp0  0 127.0.0.1:9000  0.0.0.0:*   LISTEN  3018/php-fpm: maste [root@axiang-02 vhost]# vi aaa.conflocation ~ \.php$
{include fastcgi_params;#fastcgi_pass unix:/tmp/php-fcgi.sock;
#虚拟主机配置文件中定义监听方式,sock和ip:port两种fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /data/wwwroot/aaa.com$fastcgi_script_name;
}

[root@axiang-02 vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/aaa/aaa.php
this is aaa.com
  • 注意解析的根目录参数
    • /data/wwwroot/aaa.com$fastcgi_script_name;
  • 注意nginx对接php-fpm监听方式
    • vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
  • 如果有优先级更高的php匹配,则location ~ \.php$中的参数不生效
    • 比如 location ~ .*(upload|image)/.*\.php$优先级大于 location ~ \.php$,所以curl -x127.0.0.1:80 aaa.com/reupload/aaa.php出现php不解析<?php echo "this is aaa.com"; ?>

12.16 Nginx代理

当两边的服务器不能直接访问,或者访问速度很慢,可以通过优秀的代理服务器作为中间的访问跳板

[root@axiang-02 vhost]# vim proxy.conf    //创建虚拟代理服务器,加入如下内容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@axiang-02 vhost]# /usr/local/nginx/sbin/nginx -t
[root@axiang-02 ~]# /usr/local/nginx/sbin/nginx -s reload
[root@axiang-02 ~]# curl -x127.0.0.1:80 ask.apelearn.com/robots.txt
#
# robots.txt for MiWen
#User-agent: *Disallow: /?/admin/
Disallow: /?/people/
Disallow: /?/question/
Disallow: /account/
Disallow: /app/
Disallow: /cache/
Disallow: /install/
Disallow: /models/
...

转载于:https://my.oschina.net/u/3579690/blog/1558953

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode911. 在线选举(二分法)

在选举中&#xff0c;第 i 张票是在时间为 times[i] 时投给 persons[i] 的。 现在&#xff0c;我们想要实现下面的查询函数&#xff1a; TopVotedCandidate.q(int t) 将返回在 t 时刻主导选举的候选人的编号。 在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下&…

1-13句子逆序

题目描述 将一个英文语句以单词为单位逆序排放。例如“I am a boy”&#xff0c;逆序排放后为“boy a am I”所有单词之间用一个空格隔开&#xff0c;语句中除了英文字母外&#xff0c;不再包含其他字符 接口说明 /** * 反转句子 * * param sentence 原句子 * return 反转后的…

单例模式实现DB类

创建一个类 class DB_class {//public $name andy;//私有的属性private static $db;//公共的静态方法public static function index(){if (self::$db ! null ){return self::$db;}self::$dbnew DB_class();return self::$db;}//私有的构造方法private function __construct()…

终端定时任务 开始缓冲_如何开始使用终端以提高生产力

终端定时任务 开始缓冲by Luciano Strika通过卢西亚诺斯特里卡(Luciano Strika) 如何开始使用终端以提高生产力 (How to start using the terminal to be more productive) As developers, the terminal can be our second home.作为开发人员&#xff0c;码头可以成为我们的第…

图片预览------photoswipe 使用

photoswipe 使用 预览图片后&#xff0c;需要点击关闭按钮才能关闭&#xff0c;点击图片事件效果是放大图片&#xff0c;和微信的效果不一致&#xff0c;最后改用微信预览图片的接口了&#xff0c;但是例子可以用&#xff0c;记录一下&#xff01;&#xff01; http://www.cnbl…

SSKeychain

Keychain 使用? ---为了实用最大化我觉得我应该直接先说使用&#xff01; 当然是使用第三方库啦&#xff1a;sskeychain 3000星星的库不开玩笑。github地址&#xff1a;https://github.com/soffes/sskeychain 导入完之后首先&#xff0c;编译一下有无错。 如果是自己手动导入&…

shell高级-----正则表达式

正则表达式概述 正则表达式是一种定义的规则&#xff0c;Linux工具可以用它来过滤文本。 基础正则表达式 纯文本 [rootnode1 ~]# echo "this is a cat" | sed -n /cat/p this is a cat [rootnode1 ~]# echo "this is a cat" | gawk /cat/{print $0} this …

leetcode130. 被围绕的区域(bfs)

给定一个二维的矩阵&#xff0c;包含 ‘X’ 和 ‘O’&#xff08;字母 O&#xff09;。 找到所有被 ‘X’ 围绕的区域&#xff0c;并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例: X X X X X O O X X X O X X O X X 运行你的函数后&#xff0c;矩阵变为&#xff1a; X X…

linux mysql提交_MySQL 事务提交过程

开发老大要求通过binlog查询一条被修改的数据&#xff0c;数据被查出后问我&#xff0c;有没有可能binlog中不会记录&#xff0c;回答不会&#xff0c;因为数据被修改&#xff0c;若失败直接回滚&#xff0c;不会在binlog中记录&#xff0c;此刻一个朋友用了洪荒之力告诉我&…

spray.json_如何使用Spray-json(Un)在Akka HTTP中封送JSON

spray.jsonby Miguel Lopez由Miguel Lopez 如何使用Spray-json(Un)在Akka HTTP中封送JSON (How to (Un)marshal JSON in Akka HTTP with spray-json) In the previous post, we added JSON support to our Akka HTTP API using circe.在上一篇文章中 &#xff0c;我们使用circ…

React单元测试:Jest + Enzyme(二)

前言 在上一篇教程中&#xff0c;我们成功搭建了基于Jest和Enzyme的单元测试框架并成功地跑起来第一个单元测试&#xff0c;可以点击这里回顾一下。今天&#xff0c;我们重点讨论如何通过Jest来mock数据。 什么是Mock Mock的简单翻译就是模拟。既可以模拟数据&#xff0c;也可以…

input file 文件上传,js控制上传文件的大小和格式

文件上传一般是用jquery的uploadify&#xff0c;比较好用。后面会出文章介绍uploadify这个插件。 但是&#xff0c;有时候为了偷懒&#xff0c;直接就用input 的file进行文件和图片等的上传&#xff0c;input file 可以控制上传的格式&#xff0c;但是是html5&#xff0c;很多浏…

leetcode面试题 17.08. 马戏团人塔(二分法)

有个马戏团正在设计叠罗汉的表演节目&#xff0c;一个人要站在另一人的肩膀上。出于实际和美观的考虑&#xff0c;在上面的人要比下面的人矮一点且轻一点。已知马戏团每个人的身高和体重&#xff0c;请编写代码计算叠罗汉最多能叠几个人。 示例&#xff1a; 输入&#xff1a;…

如何选择适合自己的CMS建站系统

如今做网站已不像过去那样必须找网站公司才能建&#xff0c;因为网上针对建站的各种CMS建站系统层出不穷。像PageAdmin、DEDECMS、帝国CMS、Discuz等&#xff0c;这些CMS系统各有各的特点和优势&#xff0c;小熊优化的小编我从事网站制作和网站优化多年&#xff0c;和很多建站朋…

python dict hash算法_2020年3月26日python学习笔记——hash

什么是哈希&#xff1f;hash,一般翻译做散列、杂凑&#xff0c;或音译为哈希&#xff0c;是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出&#xff0c;该输出就是散列值。这种转换是一种压缩映射&#xff0c;也就是&#xff0c;散列值的空间通常远…

数据处理不等式:Data Processing Inequality

我是在差分隐私下看到的&#xff0c;新解决方案的可用性肯定小于原有解决方案的可用性&#xff0c;也就是说信息的后续处理只会降低所拥有的信息量。 那么如果这么说的话为什么还要做特征工程呢&#xff0c;这是因为该不等式有一个巨大的前提就是数据处理方法无比的强大&#x…

aws架构_如何使用AWS构建可扩展架构

aws架构What I learned building the StateOfVeganism ?我学到的建立素食主义的方法是什么&#xff1f; By now, we all know that news and media shape our views on the topics we discuss. Of course, this is different from person to person. Some might be influence…

gulp 实现sass自动化 ,监听同步

实现功能 监听scss文件   sass自动化 准备条件 1 .安装gulp npm init ---->一直enter&#xff0c;会在当前目录下生成一个package.json文件,记录安装的依赖模块 npm install gulp --save-dev 2 .安装gulp-ruby-sass npm install gulp-ruby-sass 你还需要安装ruby环境…

leetcode面试题 10.03. 搜索旋转数组(二分法)

搜索旋转数组。给定一个排序后的数组&#xff0c;包含n个整数&#xff0c;但这个数组已被旋转过很多次了&#xff0c;次数不详。请编写代码找出数组中的某个元素&#xff0c;假设数组元素原先是按升序排列的。若有多个相同元素&#xff0c;返回索引值最小的一个。 示例1: 输入…

MSSQL → 02:数据库结构

一、数据库的组成 在SQL Server 2008中&#xff0c;用户如何访问及使用数据库&#xff0c;就需要正确了解数据库中所有对象及其设置。数据库就像一个容器&#xff0c;它里面除了存放着数据的表之外&#xff0c;还有视图、存储过程、触发器、约束等数据库对象。数据库管理的核心…