NGiNX 使用 .htaccess 保護/防盜連/限速

作者: | 2009-11-22
Logo

NGiNX 是個那摸猛滴 HTTP 伺服器軟體,當然! 絕對! 一定是可以用 .htaccess 來保護目錄的 ;) 簡單的範例如下,我要保護的是 phpmyadmin 資料夾,在 nginx.conf 的設定裡面,我的 root 網頁根目錄已經指定到 /web/www 了,所以再來就直接在 server 的區段加上

# .htaccess 保護
location ~ .*/phpmyadmin {
auth_basic "PLEASE ENTER YOUR USERNAME AND PASSWORD!";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}

location 的意思就是保護從網頁根目錄算起的 phpmyadmin 目錄 (放在 /web/www/phpmyadmin )
auth_basic 的意思就是進入資料夾時會顯示的訊息
auth_basic_user_file 的意思就是需要的帳號密碼檔案放在哪,我這邊設定是放在 /usr/local/nginx/conf/htpasswd

然後再利用 .htaccess 線上產生器(或是這裡 .htaccess Editor) 製作一個 htpasswd 丟到 /usr/local/nginx/conf/ 底下去,也不需要重新啟動,直接在 SSH 輸入


kill -HUP cat /usr/local/nginx/logs/nginx.pid

來更新 NGiNX 的新設定值就 OK 了,也不需要再多裝 Apache 來設密碼~! (Y)

另外 NGiNX 防盜連偷圖當然也是 OK 滴! (H) 一樣也是在 server 的區段加上

location ~* .(txt|ico|gif|png|bmp|jpg|jpeg|zip|rar|gz|7z|exe|mp3|flv|swf)$ {
valid_referers none blocked 520.be cpg.520.be easygo.za.net;
if ($invalid_referer) {
rewrite ^/ https://520.be/hotlink.html;
}
}

這時候 location 的意思就是保護從網頁根目錄算起,所有的指定的副檔名都依照此規則
valid_referers none blocked 的意思就是不阻擋從哪些地方來的囉~ 這邊以空格來分隔允許的域名或 ip 位置
$invalid_referer 的意思就是不允許連結
rewrite ^/ https://520.be/403.html; 的意思就是指定不允許的連結自動轉向到一個頁面,或是已經有設定 404 轉址的也可以先註解掉這行再把 #return 404 的註解拿掉,就會自動跑到你設定的 404 頁面了。

NGiNX 還能限速再限制下載線程! (6) 先在 http 區段找到 limit_zone,再把註釋拿掉~

# 設定一個叫做 crawler 的區域,大小為 20MB
limit_zone crawler $binary_remote_addr 20m;

然後在 server 的區段加上

# 限制檔案類型只能單線下載
location ~ .*.(zip|rar|gz|tar|exe|mp3|flv|swf|jpg|jpeg)$
{
limit_conn crawler 1;
limit_rate 500k; # 再加上限速

}

# 限制特定資料夾底下只能單線下載
# location /download/ {
# limit_conn crawler 1;
# limit_rate 500k; # 再加上限速
# }

簡單吧~! 輕巧的 NGiNX 不用多裝什麼模組,輕輕鬆鬆做好限制~ 用在 HostingInside 的 VPS A 初級規格,上面做簡單的 Web Benchmark 測試(原本只有 128 MB RAM,做測試之前有安裝軟體,有請客服 Lee 增加記憶體~! :$ ) 承受 500 個 clients 還沒問題,700 個 clients 的時候就有失敗了 :-( 不過受測端系統負載還是很低,不會亂飆高! :-# 要是硬體規格高一點,把 nginx.conf 的 worker_processes 以及 php-fpm.conf 的 max_children 這兩個工作線程數調高一點就能承受更大的負載了。 (Y)

備註:HostingInside 的 VPS 是 OpenVZ 介面/HyperVM 控制台、IntelQuad-Core Xeon X3220 四核心處理器,限制 150 MHz )這家服務態度粉好唷~! 從台灣連線速度很棒(Staminus Communications, 機房在 Fullerton, California),客服又能用中文溝通,值得推薦一下! 但是他們是 OpenVZ 介面的不能搞 VPN +o( ,所以偶三個月之後就不會續約了 +o(

快丟掉 Apache 吧! (6) (6)

臉書回應

篇回應

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

(A)  :@  (brb)  (U)  (:cc)  :S  (H)  :-(  :cute  (6)  :-#  :$  :er  8-)  FUCK 
(})  ({)  GY  (L)  :kao  (K)  :cc  :pu  (F)  :(  ^o)  :-*  :O  +o(  |-) 
:)  (*)  :D  *-)  (N)  (Y)  :P  :|  (W)  ;)  XD