歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> nginx網站架構優化思路(原),nginx架構優化思路

nginx網站架構優化思路(原),nginx架構優化思路

日期:2017/3/3 17:41:00   编辑:學習Linux

nginx網站架構優化思路(原),nginx架構優化思路

nginx網站架構優化思路(原),nginx架構優化思路


本人接觸的優化主要分為三大類 黑體的為本模塊下的重點

---------------安全優化

安全在生產場景中是第一位的

1.1 站點目錄權限的優化 (修改權限755 644 所屬用戶root,需要上傳的目錄給予nginx權限

1.2 防盜連接的優化(通過$http_referer實現判斷用戶來源,對非法的referer 返回錯誤代碼)這一點如果沒做 站點流量會上升(幫別人做廣告),可能會給公司造成而外的經濟損失

1.3 日志權限的優化,日志權限不要給nginx用戶,日志是分析問題和數據的重要文件,安全必須考慮

1.4 重要目錄遷移或者用目錄訪問控制用(allow,deny實現)例如配置文件或者程序安裝目錄

1.5 上傳目錄下禁止動態程序的解析(例如static目錄下禁止運行擴展名為php py pl sh的文件)防止木馬程序上傳之後運行

1.6 防止域名惡意解析(建立默認ip訪問規則),即當用戶直接用ip訪問的時候 我們返回501錯誤 類似jd taobao(實現方法建立一個default.conf 配置默認返回501

1.7 為nginx降權 實現普通用戶啟動管理nginx服務

1.8 隱藏nginx版本 通過server_tokens off實現 很基本

1.9 站點防止爬蟲優化 可以在站點 根目錄下建立robots.txt 告知相應的防止爬蟲優化,然後通過nginx的http_user_agent 參數實現訪問控制

-----------------性能優化

性能和安全是互為負相關的方面 最好取其平衡

2.1 日志優化 在真是rs服務器上關閉靜態資源日志記錄的功能(l例如jpg css js等)如果並發很大的情況下 要關閉真實服務器的日志記錄功能 ,因為日志記錄消耗資源io很明顯 在負載均衡上開啟日志記錄即可。

2.2 配置主要標簽的worker_processes數量 根據cpu核數 確定一般是1:1 對多不超過二倍

2.3 配置cpu親和力worker_cpu_affinity 平均分配cpu資源

2.4 配置worker打開的文件數量 worker_rlimit_nofile

2.5 配置event 標簽 調整連接數worker_connections 生產場景一般為4096

2.6 開啟高效傳輸模式 sendfile on

2.7 開啟資源壓縮 gzip on (gzip_comp_level 6 gzip_min_length gzip_types gzip_http_version gzip_buffers )可以通過yslow 浏覽器插件檢查站點是否啟用壓縮

2.8 開啟緩存 expires 一般在靜態資源下開啟緩存功能 例如圖片 css (expires 365d,經常變換的圖片或者資源要盡量改的時間短一點,因為有些東西不希望到的是未更新的 例如廣告

2.9 fastcgi相關參數的優化,以及基於內核的參數優化 sysctl.conf

-------------------架構優化

架構優化的目的是綜合提升性能和安全

實現原理是把不同的資源(通過擴展名實現)進行拆分,不同的訪問進行拆分(通過url實現)也可以叫做解耦,通過這樣操作可以提升靜態資源的訪問效率

3.1通過nginx的代理功能對有固定域名的資源 進行不同服務器的指向 把動態靜態資源分不同的upstream訪問 這樣靜態資源服務器上不用安裝相應的動態資源解析程序 例如tomcat 和php 一般大公司會選擇這樣的方案 例如淘寶圖片服務器 static.taobao.com等等

配置案例

server {

listen 80;

server_name dynamic.wanda.cn;

location / {

proxy_pass http://dynamic_pool;

}

}

server {

listen 80;

server_name static.wanda.cn;

location / {

proxy_pass http://static_pool;

}

}

3.2如果站點沒有實現動靜資源域名獨立 那麼可以通過nginx的基於目錄和擴展名的的proxy_pass 進行動態靜態 資源的不同服務器rs節點的指向 。這一點是中小企業方案

server {

listen 80;

server_name www.wanda.cn;

location /static {

proxy_pass http://image_pool;

}

location / { #默認包含了動態和靜態

proxy_pass http://dynamic_pool;

}

}

3.3 如果條件准許,最好在nginx代理上面加上proxy_cache的功能 緩存rs節點的靜態資源,減少對rs後端的請求,相同的資源 減少請求 就提升了性能

簡單介紹一下nginx_cache的實現思路:

首先在nginx代理服務器上 建立一個目錄 (掛載到內存下面的 tmpfs格式文件系統)

mount -t tmpfs tmpfs /tmp

然後,在nginx的http標簽內 添加以下參數 告知nginx代理 緩存的路徑在哪 緩存的zone名稱是什麼 我們的名字就叫cache 大小為64m緩存

proxy_cache_path /tmp levels=1:2 keys_zone=cache:64m;

在server標簽下 加入以下紅色內容

server {

listen 80;

server_name www.wanda.cn;

location / {

proxy_pass http://dynamic_pool;

proxy_cache cache;

}

}

重啟nginx -s reload

重新訪問以下站點目錄 帶有圖片的網頁 然後可以看到/tmp目錄下生成了緩存文件 ,通過配置 日志參數 添加 $upstream_cache_status 再次訪問 可以檢測是否去使用了緩存 如果狀態為hit說明命中 配置成功

好了 總結了一個多小時 關於nginx優化如果大家有更好的方法 歡迎一起探討

http://xxxxxx/Linuxjc/1185777.html TechArticle

Copyright © Linux教程網 All Rights Reserved