JavaShuo
欄目
標籤
nginx訪問控制
時間 2019-12-17
標籤
nginx
訪問
控制
欄目
Nginx
简体版
原文
原文鏈接
nginx訪問控制1
nginx也能夠控制訪問的ip
好比什麼ip能夠訪問虛擬主機
什麼ip 不能訪問虛擬主機
cd /etc/nginx/conf.d/ 進入這個目錄
vi tom.bbs.conf 編輯配置文件
如圖,在server代碼塊內加入以上三行代碼
allow 就是容許這兩個ip 的鏈接訪問虛擬主機
127.0.0.1 是本機迴環地址
192.168.1.0表示符合 192.168.1.0 網段的ip地址均可以訪問虛擬主機
24 是子網掩碼位數,表示子網掩碼
deny all 就是禁止全部的意思
意思就是,除了本機鏈接和 192.168.1.0/24 這個網段的鏈接
其它全部鏈接全都禁止訪問
保存退出
nginx -t && nginx -s reload 檢測重載一下配置文件
如圖,使用 curl 命令測試是否能夠連通
這裏使用的鏈接ip是 127.0.0.1 端口爲 80
鏈接的目標是 tom.bbs.com 域名
選項 I 是隻顯示header信息
下面返回的信息能夠看到,狀態碼是 200
表示沒有問題
從本機 ip 地址訪問 tom.bbs.com
返回信息是 403
由於在配置文件裏面沒有容許本機ip訪問虛擬主機
127.0.0.1 是本機內部迴環地址,不是本機ip
本機內部通訊使用 127.0.0.1
外部鏈接進來使用的是本機 ip
配置文件裏面容許的 ip 地址應該是真實存在的 ip地址
否則也是鏈接不上的,這裏作實驗就使用了假的ip地址
真正使用這個設置的時候,容許的 ip 應該是真實存在的
這種設置叫作白名單設置
就是除了容許的ip,其它ip都是不容許訪問的
還有一種設置叫作黑名單設置
如圖,這裏設置了兩行代碼
deny是禁止的意思,這裏就是禁止了兩個 ip 的訪問
127.0.0.1 和 1.1.1.1
除了這兩個 ip 不能訪問之外,其它ip均可以訪問
其它ip不須要設置,默認就是能夠訪問的
這種設置叫作黑名單設置
如圖,使用 127.0.0.1 訪問 tom.bbs.com 顯示403
如圖,從本機 ip 192.168.64.128 訪問 tom.bbs.com
返回狀態碼 200 表示鏈接成功
nginx訪問控制2
除了限制訪問的 ip 以外
還能夠限制訪問的文件目錄
就是某個目錄只有特定的ip才能夠訪問
cd /etc/nginx/conf.d
進入這個目錄
vi tom.bbs.conf
編輯配置文件
如圖,在 admin.php 的代碼塊裏面,把這兩行刪除
如圖,添加上圖中的幾行代碼
表示容許 127.0.0.1 訪問
容許 192.168.64.0 網段ip 訪問
deny all 表示其它ip不能訪問這個文件
如圖,使用 curl 測試 127.0.0.1 ip
返回200狀態碼,表示 127.0.0.1 能夠訪問 admin.php文件
如圖,測試 192.168.64.0 網段的ip
返回200狀態碼,成功訪問
如圖,修改一下配置文件裏面容許的ip地址爲 192.168.1.0 網段
保存退出,nginx -t && nginx -s reload
如圖,使用 curl 訪問本機的網卡 ip 192.168.64.128:80
返回狀態碼 403
由於配置文件裏面沒有容許這個 ip 訪問 admin.php 文件
如圖,把 admin.php 改成 admin
測試訪問,返回 404 狀態碼
表示 admin 文件不存在
無論返回403仍是404都說明經過這個ip是能夠訪問到網站服務器的
如圖,新建一個 location /abc 代碼塊
意思是在網站內,訪問 /abc 目錄的時候作出限制
代碼塊裏面的內容是 allow 127.0.0.1 是容許本機內部訪問
deny all 表示別的 ip 不能訪問
如圖,使用本機網卡 ip 192.168.64.128 訪問 tom.bbs.com/abc 目錄
返回 403 表示這個ip不能訪問這個目錄
由於在配置文件裏面沒有容許這個ip訪問這個目錄
如圖,使用 127.0.0.1 訪問 tom.bbs.com/abc 目錄
返回 404 表示沒有找到這個目錄
由於 /abc 是虛構的目錄,並無被建立,因此使找不到的
返回 404 而不是 403 說明 127.0.0.1 是能夠訪問這個目錄的
這樣就能夠限制某個 ip 訪問某個特定的目錄了
nginx 訪問控制3
若是用戶能夠對網站上傳文件
有可能會上傳病毒文件到網站的目錄裏面
因此有時候須要對網站目錄的文件寫入進行限制
如圖,新建一個 location 代碼塊
後面是正則匹配
.* 表示任意個字符
(upload|image....) 表示其中選一個
兩個合起來就是 任意字符 + upload或者括號內其它的選項
符號 / 就是通常目錄後面的斜槓
而後 .* 表示任意字符, . 是轉義
符號 . 使用的是本來的符號 . 而不是正則的符號 .
因此這裏須要轉義一下
而後是 php 結尾
就是匹配一個字符串
任意字符 + (upload|image...之一) + / + 任意字符 + .php
若是訪問符合以上條件的文件,就會沒法訪問
保存退出,nginx -t && nginx -s reload
如圖,使用 curl 訪問 tom.bbs.com/.../upload/....php
返回 403 表示不能訪問符合剛纔設定的格式的文件
下面 把 upload 改成 uploads
返回 404
由於 uploads 並無被禁止
因此能夠訪問,可是這個目錄並不存在,因此返回404
還可使用這個方法來禁止別的類型的文件或目錄被訪問
訪問控制4
還能夠限制user-agent
如圖,查看日誌,後面這一串字符就是 user-agent
這樣的 user-agent 是正常的 user-agent
還有不正常的 user-agent
如圖,這樣的 user-agent 就是不正常的 user-agent
如圖,這樣的 user-agent 也是正常的 user-agent
如圖,這個是新浪的機器人,也是不正常的 user-agent
如圖,這樣的也是正常的 user-agent
對於不正常的 user-agent 就須要封掉
cd /etc/nginx/conf.d/
vi tom.bbs.com
添加上圖代碼到配置文件任意位置
代碼意思是 變量http_user_agent 匹配到
後面三個值中的任何一個,就返回 403
也就是說 http_user_agent的值不能包含後面三個值的任何一個
而後保存退出
nginx -t && nginx -s reload
如圖,第一個 選項 -A 能夠自定義一個 user-agent
第一個curl 使用 aaaa 爲user-agent 訪問 tom.bbs.com
返回200狀態碼,訪問成功
第二個curl 使用 aaaaSpider/3.0 做爲 user-agent
返回 403 訪問不成功
由於配置文件裏面限制了 Spider/3.0 這個字符串
user-agent包含這個字符串就會返回403
如圖,使用 -v 選項能夠看到更詳細的通訊過程
這裏能夠看到 user-agent 的值
如圖,使用 -e 選項能夠自定義 referer
這裏自定義爲 1111
返回信息能夠看到 referer 爲 1111
nginx訪問控制5
限制 uri
如圖,訪問一個網站的內容
域名後面的 home.php 就是 document uri
問號 ? 後面的內容就是 參數 args
document uri + args = request uri
虛擬主機配置文件裏面,能夠限制 request uri
好比設置 document uri 或者 args
裏面包含某個字符,就返回指定的狀態碼
如圖,添加上圖代碼到 tom.bbs.conf 配置文件裏面
意思是 request_uri 包含 abc 或者 123
就返回 404
無論是 document uri 包含
仍是 args 包含 都會返回 404
如圖,把後面 args 的值修改成 abc
而後刷新頁面,就變成 404 了
可是實際上網頁仍是存在的,把abc 去掉就能夠訪問了
也能夠返回 403,在配置文件設置
這樣就能夠對 request uri 進行關鍵詞匹配限制訪問了
相關文章
1.
nginx訪問控制
2.
Nginx--訪問控制
3.
Nginx-訪問控制
4.
Nginx訪問控制
5.
nginx---訪問控制
6.
nginx 訪問頻率控制
7.
nginx location 訪問控制
8.
12.14 Nginx訪問控制
9.
nginx的訪問控制
10.
nginx 訪問控制之 http_referer
更多相關文章...
•
Swift 訪問控制
-
Swift 教程
•
Lua 數據庫訪問
-
Lua 教程
•
漫談MySQL的鎖機制
•
Docker容器實戰(六) - 容器的隔離與限制
相關標籤/搜索
訪問
控制
訪問量
大訪問量
訪問方式
訪問者
工程師之路-訪問控制篇
控制項
控制區
Nginx
SQLite教程
Spring教程
NoSQL教程
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
FM理論與實踐
2.
Google開發者大會,你想知道的都在這裏
3.
IRIG-B碼對時理解
4.
乾貨:嵌入式系統設計開發大全!(萬字總結)
5.
從域名到網站—虛機篇
6.
php學習5
7.
關於ANR線程阻塞那些坑
8.
android studio databinding和include使用控件id獲取報錯 不影響項目正常運行
9.
我女朋友都會的安卓逆向(四 動態調試smali)
10.
io存取速度
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
nginx訪問控制
2.
Nginx--訪問控制
3.
Nginx-訪問控制
4.
Nginx訪問控制
5.
nginx---訪問控制
6.
nginx 訪問頻率控制
7.
nginx location 訪問控制
8.
12.14 Nginx訪問控制
9.
nginx的訪問控制
10.
nginx 訪問控制之 http_referer
>>更多相關文章<<