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.pswp.cn/news/393497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393497.shtml
英文地址,請注明出處:http://en.pswp.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;還有視圖、存儲過程、觸發器、約束等數據庫對象。數據庫管理的核心…