Nginx運作程序個數,一般我們設定CPU的核心或者核心數x2,如果你不了解,top指令之後按1也可以看出來(一般直接追到線程即可)
Nginx運作CPU親和力(這個要根據你的CPU線程數配置)
比如4核4線程配置
比如8核8線程配置
那麼如果我是4線程的CPU,我隻想跑兩個程序呢?
意思就似乎我開啟了第一個和第三個核心,第二個和第四個核心,兩個程序分别在這兩個組合上輪詢!worker_processes最多開啟8個,8個以上性能提升不會再提升了,而且穩定性變得更低,是以8個程序夠用了。
Nginx最多可以打開檔案數 worker_rlimit_nofile 65535;
這個指令是指當一個nginx程序打開的最多檔案描述符數目,理論值應該是最多打開檔案數(ulimit -n)與nginx程序數相除,但是nginx配置設定請求并不是那麼均勻,是以最好與ulimit -n的值保持一緻。
Nginx事件處理模型
知道在linux下nginx采用epoll事件模型,處理效率高,關于epoll的時間處理其他隻是,可以自行百度,了解即可!
Work_connections是單個程序允許用戶端最大連接配接數,這個數值一般根據伺服器性能和記憶體來制定,也就是單個程序最大連接配接數,實際最大值就是work程序數乘以這個數,如何設定,可以根據設定一個程序啟動所占記憶體,top -u nginx,但是實際我們填入一個65535,足夠了,這些都算并發值,一個網站的并發達到這麼大的數量,也算一個大站了!
開啟高效傳輸模式
連接配接逾時時間
主要目的是保護伺服器資源,CPU,記憶體,控制連接配接數,因為建立連接配接也是需要消耗資源的,TCP的三次握手四次揮手等,我們一般斷掉的是那些建立連接配接但是不做事兒,也就是我建立了連結開始,但是後續的握手過程沒有進行,那麼我們的連結處于等待狀态的,全部斷掉!
同時我們也希望php建議短連結,消耗資源少
Java建議長連結,消耗資源少
檔案上傳大小限制
我們知道PHP可以修改上傳檔案大小限制,nginx也可以修改
Fastcgi調優
Nginx沒有配置factcgi,你使用nginx是一個失敗的方法,配置之前。了解幾個概念:
修改nginx.conf配置檔案,在http标簽中添加如下:
緩存路徑,levels目錄層次2級,定義了一個存儲區域名字,緩存大小,不活動的資料在緩存中多長時間,目錄總大小
在server location标簽添加如下:
fastcgi cache官方文檔:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache
gzip調優
使用gzip壓縮功能,可能為我們節約帶寬,加快傳輸速度,有更好的體驗,也為我們節約成本,是以說這是一個重點
Nginx啟用壓縮功能需要你來ngx_http_gzip_module子產品,apache使用的是mod_deflate
一般我們需要壓縮的内容有:文本,js,html,css,對于圖檔,視訊,flash什麼的不壓縮,同時也要注意,我們使用gzip的功能是需要消耗CPU的!
那麼配置壓縮的過程中,會有一下參數
expires緩存調優
緩存,主要針對于圖檔,css,js等元素更改機會比較少的情況下使用,特别是圖檔,占用帶寬大,我們完全可以設定圖檔在浏覽器本地緩存365d,css,js,html可以緩存個10來天,這樣使用者第一次打開加載慢一點,第二次,就非常快樂!緩存的時候,我們需要将需要緩存的拓展名列出來!
Expires緩存配置在server字段裡面
同時也可以對目錄及其進行判斷:
expire功能優點
(1)expires可以降低網站購買的帶寬,節約成本
(2)同時提升使用者通路體驗
(3)減輕服務的壓力,節約伺服器成本,甚至可以節約人力成本,是web服務非常重要的功能。
expire功能缺點:
被緩存的頁面或資料更新了,使用者看到的可能還是舊的内容,反而影響使用者體驗。
解決辦法:
第一個 縮短緩存時間,例如:1天,不徹底,除非更新頻率大于1天
第二個 對緩存的對象改名
a.圖檔,附件一般不會被使用者修改,如果使用者修改了,實際上也是更改檔案名重新傳了而已
b.網站更新對于js,css元素,一般可以改名,把css,js,推送到CDN。
網站不希望被緩存的内容
1)廣告圖檔
2)網站流量統計工具
3)更新頻繁的檔案(google的logo)
日志優化的目的,是為了一天日志一壓縮,焚天存放,超過10天的删除
建立日志切割腳本
//每天日志分割腳本
健康檢查的日志,不輸入到log中,這些日志沒有意義,我們分析的話隻需要分析通路日志,看看一些頁面連結,如200,301,404的狀态嗎,在SEO中很重要,而且我們統計PV是頁面計算,這些都沒有意義,反而消耗了磁盤IO,降低了伺服器性能,我們可以屏蔽這些如圖檔,js,css這些不宜變化的内容
日志目錄權限優化
日志格式優化
其中,各個字段的含義如下:
目錄檔案通路控制
主要用在禁止目錄下指定檔案被通路,當然也可以禁止所有檔案被通路!一般什麼情況下用?比如是有存儲共享,這些檔案本來都隻是一下資源檔案,那麼這些資源檔案就不允許被執行,如sh.py,pl,php等等
例如:禁止通路images下面的php程式檔案
測試通路

多目錄組合配置方法
配置nginx禁止通路*.txt檔案
配置規則,禁止通路
當然,可以重定向到某一個URL
對目錄進行限制的方法
上面是直接給了回報的狀态嗎,也可以通過比對deny all方式做
來源通路控制
這個需要ngx_http_access_module子產品支援,不過,預設會安裝
接着上面的實驗,就可以通路了,下面是針對整個網站的寫法,對/限制就OK
當然可以寫IP,可以寫IP段,但是注意次序,上下比對
同時,也可以通過if語句控制,給以友好的錯誤提示
#此處remote_addr位址為目前編輯文檔的系統ip位址
IP和301優化
有時候,我們發現通路網站的時候,使用IP也是可以得,我們可以把這一層給屏蔽掉,讓其直接回報給403,也可以做跳轉
跳轉的做法:
403回報的做法
301跳轉的做法
#如我們域名一般在解析的過程中,linuxprobe.com一般會跳轉到www.linuxprobe.com,記住修改本地hosts