国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > Nginx如何設(shè)置目錄保護、防盜鏈、限速、多域名

    Nginx如何設(shè)置目錄保護、防盜鏈、限速、多域名

    時間: 若木635 分享

    Nginx如何設(shè)置目錄保護、防盜鏈、限速、多域名

      Nginx是個非常優(yōu)秀的HTTP服務(wù)器軟件,可以通過設(shè)置有實現(xiàn)許多功能,如目錄保護、IP訪問限制、防盜鏈、下載限速及設(shè)置多域名等等。

      一、NGINX目錄保護及訪問限制

      Nginx保護目錄的配置如下,目錄密碼保護文件是 /usr/local/nginx/htpasswd

      location ~ /admin {#admin為要保護的目錄名稱,location 的意思就是保護從網(wǎng)頁根目錄算起的admin 目錄auth_basic ”PLEASE LOGIN”; #就是進入資料夾時會顯示的信息auth_basic_user_file /usr/local/nginx/htpasswd; #驗證用戶及密碼文件,我這邊設(shè)定是放在 /usr/local/nginx/htpasswd}location ~ .php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/bbs$fastcgi_script_name;include fastcgi_params;}

      注意,設(shè)置目錄密碼保護時,請注意配置區(qū)塊的位置,如果放在location ~ .php$ {}區(qū)塊后面,如果打開的是靜態(tài)頁面或圖片等非php文件,會提示要輸入密碼,但是,如果打開的是php文件,則設(shè)置無效,會直接執(zhí)行php文件并顯示。因此,一定要注意把要設(shè)置目錄密碼保護的區(qū)塊放在location ~ .php$ {}區(qū)塊之前。

      生成密碼文件:

      htpasswd -b -c /usr/locla/nginx/htpasswd username password;

      二、NGINX防盜鏈

      另外 NGiNX 防盜鏈,防止別人偷圖(視頻、flash、軟件…)當(dāng)然也是 OK 滴! 一樣也是在 server 的區(qū)段加上

      location ~* .(txt|ico|gif|png|bmp|jpg|jpeg|zip|rar|gz|7z|exe|mp3|flv|swf)$ {

      valid_referers none blocked opsers.org www.xuexila.org ;

      if ($invalid_referer) {

      rewrite ^/

      }

      }

      這時候 location 的意思就是保護從網(wǎng)頁根目錄算起,所有的指定類型的文件都依照此規(guī)則

      valid_referers none blocked 的意思就是不阻擋從哪些地方來的羅~ 這邊以空格來分隔允許的域名或 ip 位置

      $invalid_referer 的意思就是不允許連結(jié)

      rewrite ^/ 的意思就是指定不允許的連結(jié)自動轉(zhuǎn)向到一個頁面,或是已經(jīng)有設(shè)定 404 轉(zhuǎn)址的也可以先注解掉這行再把 #return 404 的注解拿掉,就會自動跑到你設(shè)定的 404 頁面了。

      如何來看防盜鏈?zhǔn)欠袷巧У?,建議大家直接看服務(wù)日志,不要拿個網(wǎng)站來測試。因為有些不要臉的家伙(比如百度),他會用自己的圖片服務(wù)器來提供服務(wù)。就是因為這個原因,上一次我在做這個的時候,浪費了很多時間。

      三、NGINX下載限速

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

      # 設(shè)定一個叫做 crawler 的區(qū)域,大小為 20MB

      limit_zone crawler $binary_remote_addr 20m;

      然后在 server 的區(qū)段加上

      # 限制檔案類型只能單線下載

      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多域名設(shè)置

      今天在配置PHP+Nginx時出現(xiàn)一個嚴重的問題,在Nginx虛擬主機上綁定了泛域名,在程序中需要用二級域名指向不同的內(nèi)容,但無論如何訪問都只跳轉(zhuǎn)到主域名上!為了找到問題,一個一個試驗,得出如下結(jié)論:不管綁定多少域名,用 $_SERVER["SERVER_NAME"] 只會返回虛擬主機中綁定的第一個域名!

      比如綁定域名如下:

      server_name www.lingsu888.com *.fxzc.com xuexila.com

      現(xiàn)在我不管用什么域名訪問, $_SERVER["SERVER_NAME"] 都只會返回 www.lingsu888.com !!這是個很嚴重的問題,對泛域名造成了致命的影響!

      既然有問題,就肯定有解決方案。。在wiki主翻了N久,終于找到了需要的資料!原來:$_SERVER["SERVER_NAME"] 返回的值是由 Nginx 的 fastcgi_param 中 SERVER_NAME 提供的,而默認的配置為:

      fastcgi_param SERVER_NAME $server_name;

      Nginx中 $server_name 變量就是上面設(shè)置的域名,只會返回第一個!

      這下好辦了,把上面的配置改成:

      fastcgi_param SERVER_NAME $host;

      就行了。

      另外還需要在server_name配置后面加一行:

      server_name_in_redirect off;

      意思是 讓 nginx 在處理自己內(nèi)部重定向時不默認使用 server_name 設(shè)置中的第一個域名!

    138693