企業級Nginx服務基礎到架構優化詳解--(16-25條)

1六、Nginx站點目錄及文件URL訪問控制(防止惡意解析)php

1)根據擴展名限制程序或者文件被訪問html

資源文件夾如用戶上傳的頭像,防止惡意上傳腳本病毒文件被解析執行nginx

server {web

location ~ ^/p_w_picpaths/.*\.(php|php5|sh|pl|py)$ { #指定目錄限制訪問瀏覽器

            deny all;緩存

        }服務器

        location ~ ^/static/.*\.(php|php5|sh|pl|py)$ {網絡

            deny all;架構

        }運維

        location ~ ^/data/.*\.(php|php5|sh|pl|py)$ {

            deny all;

        }

        location ~ .*\.(php|php5)?$ { #必須配置在解析以前

            root html/www;

            fastcgi_pass        127.0.0.1:9000;

            fastcgi_index       index.php;

            include fastcgi.conf;

        }

}


2)禁止訪問目錄並返回指定HTTP代碼

server {

    location /admin/ { return 404; }

}


3)限制網站來源IP

server {

location ~ ^/admin/ {

            allow 202.111.12.211;

           #allow 192.168.1.0/24; #也能夠限制IP段

            deny all;

        }

}


企業問題案列:Nginx作方向代理的時候能夠限制客戶端IP嗎?

方法一:用if來控制

if ( $remotea_addr = 10.0.0.110 ) {

  return 403;

}

if ( $remotea_addr = 10.0.0.111 ) {

  set $allow_access_root 'true';

}


方法二:利用deny和allow

location / {

  root html/blog;

  index index.php index.html index.html;

  deny 10.0.0.7;

  allow all;

}



1七、防止惡意解析訪問企業網站

方法一

server {

  listen 80 default_server;

  server_name _;

  return 501;

}


方法二

server {

  listen 80 default_server;

  server_name _;

  rewrite ^(.*) http://www.lichengbing.cn$1 permanent;

}


方法三

server {

 if ($host !~ ^www/.lichengbing/.com$) {

  rewrite ^(.*) http://www.lichengbing.cn$1 permanent;

}



1八、Nginx圖片及目錄防盜鏈

網站圖片被盜鏈最直接的影響就是網絡帶寬佔用加大了,寬帶費用變高了,網絡流量忽高忽低,Zabbix頻繁告警

因爲購買了CDN加速,流量高了好幾個G,瞬間損失好幾萬...

利用referer防盜鏈

location ~.* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {

    valid_referers none blocked *.lichengbing.cn lichengbing.cn;

 if ($invalid_referer) {

    rewrite ^/ http://www.lichengbing.cn/img/nolink.jpg

   }

}


#或者也可使用NginxHttpAccessKeyModule實現防盜鏈


1九、Nginx錯誤頁面的優雅顯示

server {

  error_page 403   /403.html; #當出現403錯誤時,會跳轉到403.html頁面

}



20、Nginx防爬蟲優化

robots.txt機器人協議

網絡爬蟲排除標準,告訴搜索引擎哪些目錄能夠抓取,哪些禁止抓取

禁止下載協議代理

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {

    return 403;

}


防止N多爬蟲代理訪問網站

if ($http_user_agent ~*

  「qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot」) {

   return 403;

}


禁止不一樣瀏覽器訪問

if ($http_user_agent ~* 「Firefox|MSIE」)

{

rewrite ^(.*) http://blog.etiantian.org/$1 permanent

}


 

21 、限制HTTP請求方法

if ($request_method !~ ^(GET|HEAD|POST)$ ) {

   return 501;

}


只容許GET等,容許DELETE、SEARCH等

爲防止***經過上傳服務器執行***,也能夠在上傳服務器上作限制HTTP的GET

if ($request_method ~* ^(GET)$ ) {

  return 501;

}



2二、防DOS***

使用limit_conn_zone進行控制,控制單個IP或域名的訪問次數,限制連續訪問

limit_conn_zone $binary_remote_addr zone=perip:10m;

limit_conn_zone $server_remote_addr zone=perserver:10m;

server {

limit_conn perip 10;

limit_conn perserver 100;

}


#還可使用limit_req_zone進行控制,控制單個IP的訪問速率


2三、使用CDN爲網站內容加速

全國或全球的內容分佈式緩存集羣,其實質經過智能DNS判斷用戶的來源地域及上網線路,爲用戶選擇一個最接近用戶地域,以及和用戶上網線路相同的服務器節點,提高用戶瀏覽網站的體驗

要加速的業務數據應該存在獨立的域名,而後刪除A記錄解析,使用CNAME解析


2四、Nginx程序架構優化

解耦,一堆程序代碼按照業務用途分開,而後提供服務,例如:註冊登陸、上傳、下載、瀏覽列表、商品內容、訂單支付等都應該是獨立的程序服務,只不過在客戶端看來是一個總體而已,小公司最起碼要作到的解耦是

01網頁頁面服務

02圖片附件及下載服務

03上傳圖片服務


2五、使用普通用戶啓動Nginx(監牢模式)

降權思想,Nginx的Master進程使用的是root用戶,worker進程使用的是nginx指定的普通用戶,用root跑nginx的Master進程有兩大問題:1是最小化權限分配遇到問題;二、網站一旦有漏洞,很容易丟掉root權限

降權執行的好處:

一、建立普通用戶inca,用inca跑Nginx服務,開發運維都使用普通賬號,只要和inca同組,照樣能夠管理nginx,還解決了root權限太大問題

二、職責分明,相關帳號負責維護程序和日誌,出問題負首要責任

相關文章
相關標籤/搜索