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 進行關鍵詞匹配限制訪問了
相關文章
相關標籤/搜索