1. 程式人生 > >nginx安全與效能優化(上部)

nginx安全與效能優化(上部)

Nginx——Ngine X,是一款自由的、開源的、高效能HTTP伺服器和反向代理伺服器;也是一個IMAP、POP3、SMTP代理伺服器;也就是說Nginx本身就可以託管網站(類似於Tomcat一樣),進行Http服務處理,也可以作為反向代理伺服器使用。

Nginx 解決了伺服器的C10K(就是在一秒之內連線客戶端的數目為10k即1萬)問題。它的設計不像傳統的伺服器那樣使用執行緒處理請求,而是一個更加高階的機制—事件驅動機制,是一種非同步事件驅動結構.

nginx優點:

*基於非同步IO模型(epoll,kqueue),效能強,能夠支援上萬併發

*對小檔案支援很好,效能很高

*程式碼優美,擴充套件庫必須編譯進主程式

*消耗系統資源比較低

1.隱藏nginx版本號:

在nginx.conf的http標籤裡新增server_tokens off;
context(環境或位置):http server location

2.更改nginx的預設使用者及使用者組nobody

為了安全起見,需要更改nginx的預設使用者及使用者組nobody
方法一:在nginx主配置檔案中設定user nginx nginx
context  main
方法二:編譯時指定使用者
./configure --user=nginx --group=nginx

3.調整nginx子程序數,取決於許多因素,一般與cpu核數相等
worker_processes  2;

context main

4.優化cpu資源分配給不同的nginx程序,
通過worker_cpu_affinity引數設定,一般此引數的值和worker_processes相等比較好,但也由諸多因素所影響
四核cpu伺服器;worker_cpu_affinity 0001 0010 0100 1000
八核cpu伺服器;worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000
work_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000
context main

5.調整nginx事件處理模型
nginx的連線處理機制在於不同的作業系統採用不同的I/O模型,在linux使用epoll
的IO多路複用模型,在freebsd使用kqueue的IO多路複用模型,在solaris使用
/dev/poll方式的IO多路服用模型等
 配置引數
events
{
  use epoll;
  }
use是個事件模型指令,用來指定nginx的工作模式。nginx支援的工作模式有
select,poll,kqueue,epoll等等。其中select和poll都是標準的工作模式,不同的
是epoll用於linux平臺上,而kqueue用來BSD系統中。對於linux系統linux2.6的核心,
推薦選擇epoll模式,這個高效能高併發的設定。
context:events
一般不需要明確指定事件模型,nginx會自動選擇最有效的工作模式

6.每個程序最大連線數
worker_connections  4096;
context events

7.配置每個程序最大檔案開啟數:
worker_rlimit_nofile 65535
context:main

配合Linux系統檔案描述符(使用者級限制)使用

[[email protected] nginx]# ulimit -n
65535

可參考資料http://blog.csdn.net/kumu_linux/article/details/78777708.

8.設定連線超時時間


keeplive_timeout 60
設定客戶端連線保持會話的超時時間,超過這個時間,伺服器會關閉這個連線


tcp_nodelay on 
開啟tcp_nodelay,在包含了keeplive引數才有效
client_header_timeout 15
設定客戶端請求頭讀取超時時間。如果超過這個時間,客戶端還沒有傳送任何
資料,nginx將返回"Request timeout(408)錯誤"
client_body_timeout 15
設定客戶端請求主體讀取超時時間。如超過這個時間,客戶端還沒有傳送任何資料,
nginx將返回“Request timeout(408)錯誤”,預設是60
send_timeout 15;
響應客戶端的超時時間。這個超時僅限於兩個連線活動之間的時間,超過這個時間,客戶端沒有任何活動,
nginx將會關閉這個連線

context http server location

9.上傳檔案大小限制
client_max_body_size 10m;
context http server location

10.fastcgi調優(配合PHP引擎動態服務)
fastcgi_connect_timeout 300;
指定連線到後端FastCGI的超時時間


fastcgi_send_timeout 300;
向FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向FastCGI傳送請求的超時時間


fastcgi_read_timeout 300;
指定接收FastCGI應答的超時時間,這個值是指完成兩次握手後向FastCGI應答的超時時間


fastcgi_buffer_size 64k;
指定讀取FastCGI應答第一部分需要用多大的緩衝區,這個值表示將使用1個64kb的緩衝區讀取應答的
第一部分,可以設定為fastcgi_buffers選項指定的緩衝區大小。


fastcgi_buffers 4 64k;
指定本地需要用多少和多大的緩衝區來緩衝FastCGI的應答請求

context http server location

相關推薦

nginx安全效能優化上部

Nginx——Ngine X,是一款自由的、開源的、高效能HTTP伺服器和反向代理伺服器;也是一個IMAP、POP3、SMTP代理伺服器;也就是說Nginx本身就可以託管網站(類似於Tomcat一樣),進行Http服務處理,也可以作為反向代理伺服器使用。 Nginx 解

JVM學習記錄-線程安全優化

多線程 image @param decimal 屬於 資源分配 try 可能 例如 前言 線程:程序流執行的最小單元。線程是比進程更輕量級的調度執行單位,線程的引入,可以把一個進程的資源分配和執行調度分開,各個線程既可以共享進程資源(內存地址、文件I/O等),又可以獨立

Storm 使用經驗效能優化

提交任務:storm jar storm-starter-topologies-1.0.1.jar org.apache.storm.starter.WordCountTopology word-count查詢任務:storm list Kill任務:storm kill

資料庫設計效能優化

** 良好的資料庫設計能夠 **: 節省資料的儲存空間。 能夠保證資料的完整性。 方便進行資料庫應用系統的開發。 糟糕的資料庫設計: 資料冗餘、儲存空間浪費。 記憶體空間浪費。 資料更新和插入異常麻煩。 資料庫的生命週期: 1、需求分析

淺談JavaSE效能優化1——BufferedImage畫素級渲染

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

前端效能優化-- 檔案的壓縮合併

首先我們需要搞清楚,我們為什麼需要進行檔案的壓縮與合併?壓縮與合併的原因主要有兩點 減少HTTP請求數 減小HTTP的請求大小 這裡的主要優化方式有3點: HTML/CSS/JS檔案的壓縮 CSS/JS檔案的合併 開啟GZIP壓縮 如何進行HTML壓縮 使用線上網站壓縮

HTTP/2 WEB 效能優化

提醒:本文最後更新於 1327 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 在「HTTP/2 與 WEB 效能優化(一)」這篇部落格中,我主要寫了 HTTP/2 中的 Server Push 給 WEB 效能優化帶來的便利,今天繼續來聊一聊 HTTP/2 其他方面的改變。 我們知道,HT

HTTP/2 WEB 效能優化

提醒:本文最後更新於 1333 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 2013 年 11 月份開始,我的部落格開始支援了 SPDY 協議(詳見這裡),也就是 HTTP/2 的前身。今年二月份,Google 宣佈將在 16 年初放棄對 SPDY 的支援,隨後 Google 自家支援

HTTP/2 WEB 效能優化

提醒:本文最後更新於 1320 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 在連續寫了兩篇關於「HTTP/2 與 WEB 效能優化」的文章後,今天來寫這個系列的最後一篇。在正式開始之前,我們先來簡單回顧下之前兩篇文章: 「HTTP/2 與 WEB 效能優化(一)」的結論是:HTTP/2

php網站速度效能優化

一個網站的訪問開啟速度至關重要,特別是首頁的開啟載入過慢是致命性的,本文介紹關於php網站效能優化方面的實戰案例:淘寶首頁載入速度優化實踐 。想必很多人都已經看到了新版的淘寶首頁,它與以往不太一樣,這一版頁面中四處彌散著個性化的味道,由於獨特的個性化需求,前端也面臨各方面的技術挑戰:  

淺談前端效能優化——對HTTP傳輸進行壓縮

1、前端效能優化的一點: 對js、css、圖片等進行壓縮,儘可能減小檔案的大小,減少檔案下載的時間,從而減少網頁響應的時間。   2、前端效能優化的另一點: 對HTTP傳輸進行壓縮,即在js,css、圖片等資源已經壓縮的基礎上(其實,檔案的壓縮與否均可,檔案的壓縮跟HTTP傳輸過程的壓縮沒關

淺談前端效能優化

前端效能優化中,減少HTTP請求可以提高頁面的響應速度。 瀏覽器在第一次訪問頁面時向伺服器請求資源,並快取起來,下次再訪問時會判斷在快取中是否已有該資源且有沒有更新過,如果已有該資源且未更新過,則直接從瀏覽器快取中讀取。原理:通過HTTP 請求頭中的 If-Modified-Since(If-No-Matc

MongoDB---效能優化---1

MONGODB資料架構 升級解決.方案 問題發現  應用server突然湧入的使用者人數,造成server響應變慢  檢查server,發現每次響應速度極慢,為30ops  檢

oracle程式設計300例-效能優化

1、在SELECT語句中避免使用“*” 2、儘可能減小記錄行數 3、使用rowid高效刪除重複記錄 例項: delete from stu s where s.rowid>(select min(t.rowid) from stu t where t.stu=t.stu / 4、使用t

C#效能優化1-- 使用泛型時避免裝箱

  本想接著上一篇詳解泛型接著寫一篇使用泛型時需要注意的一個性能問題,但是後來想著不如將之前的詳解XX系列更正為現在的效能優化系列,記錄在工作時遇到的一些效能優化的經驗和技巧,如果有什麼不足,還請大家多多指出;   在使用集合時,通常為了防止裝箱操作而選擇List<T>、Dictionary&l

tomcat伺服器的效能優化1

由於公司的專案在高併發訪問的情況下出現了崩潰,而鑑於在做系統時對併發處理並沒有很完善,所以從tomcat伺服器的效能優化出發,進行了學習與研究,特總結如下: 一、概述 本文件主要介紹了Tomcat的效能調優的原理和方法。可作為公司技術人員為客戶Tomcat系統調優的技術指南,也可以提

Web前端效能優化

1. 靜態資源的壓縮與合併 我們在開發的時候會習慣縮排和寫註釋,方便我們在日常的維護,但將程式碼上傳至服務端後,我們完全可以把那些空格、製表符、換行符進行壓縮,以此減少請求資源的大小;同樣的,我們在服務端所引用的第三方庫進行合併,能減少 HTTP 的請求數量 將

MySQL之查詢效能優化

為什麼查詢速度會慢 通常來說,查詢的生命週期大致可以按照順序來看:從客戶端,到伺服器,然後在伺服器上進行解析,生成執行計劃,執行,並返回結果給客戶端。其中“執行”可以認為是整個生命週期中最重要的階段,這其中包括了大量為了檢索資料到儲存引擎的呼叫以及呼叫後的資料處理,包括排序、分組等。 在完成這些任務的時候

MySQL之查詢效能優化

優化特定型別的查詢 COUNT()的作用 COUNT()是一個特殊函式,有兩個非常不同的作用:它可以統計某個列值的數量,也可以統計行數。在統計列值時要求列值是非空的(不統計NULL)。 如果在COUNT()的括號中指定了列或者列的表示式, 則統計的就是這個表示式有值的結果數。 因為很多人對NULL理解有可

JVM效能優化:垃圾收集

原文地址,譯文地址,譯者:Greenster Java平臺的垃圾收集機制顯著提高了開發者的效率,但是一個實現糟糕的垃圾收集器可能過多地消耗應用程式的資源。在Java虛擬機器效能優化系列的第三部分,Eva Andreasson向Java初學者介紹了Java平臺的記憶體模型和垃圾收集機制。她解釋了