nginx的酷配置

nginx其實從初學到現在已經有1個年頭了,不管從官網學習到還是書籍,記得住的時間永遠只有那麼一點。最近工作需要用到,重回去看一些書籍資料整理出來,方便以後複習和志同道合的朋友學習觀摩,有不正確的地方歡迎指出來改正。
ngixn的配置文件中內容比較多,一般學習過的都能大體看得懂一些,今天說一些比較厲害的點:

配置用戶和組、工作連接數

nginx.conf中有幾個頂級作用域,event就是其中一個,這個平時使用不多,裏面主要包含使用模型use expoll、worker-connections限制訪問連接數
配置nginx的用戶和組,是在頂級作用域下user指令+用戶+組,如user www www

訪問日誌

日誌主要用兩個指令log_format和access_log,前者設置日誌文件的格式,後者設置將日誌存放在哪,採用哪種格式和是否使用緩存等。這兩個指令可以在server或者http作用域上使用。
format指令如下 format name xxx ,每個format都要指定其名字,將在access_log中引用到。默認nginx給我們配置了一個名字爲combined的格式。當我們nginx只作爲負載均衡器後普通的web服務器時,remoteaddrip http_x_forwarded_for變量獲取到客戶端的真正ip,原因是在代理的時候,代理服務器設置到了http頭部去了。
access_log指令如下 access_log path format_name buffer=512k,access_log先要配置存放的路徑,再指定格式化名稱和設置緩存時間。緩存越長性能越好,但是日誌實時性就越差。有些設置path會使用變量,如$server_name,用於將日誌創建在不同的域名文件夾下分開記錄,但是在path上使用變量有很多限制,如用戶非root無法創建文件夾,無法使用緩存等,所以儘量在有限域名下自己來配置路徑path
nginx 的日誌文件隨着時間會越來越大,就涉及到了日誌切割的問題了。日誌切割這個活不在nginx上做,而是自己寫腳本,配合linux的指令mv和kill -USR1 pid來自定義腳本,使用crontab定期執行。

資源過期

在location作用域中經常看多expires指令,仔細看expires存在的地方一般都在js,css,img等靜態資源上,因爲這些資源很少被改動,所以每次請求都重新獲取很是浪費網絡io和降低性能,所以可以設置expires圖片在一個月,css,js在一個小時。原理是通過response的Expires和Cache-Control頭部返回。

虛擬主機

虛擬主機可以將一臺服務器給不同的服務提供,互不影響。使得一臺服務器,一組(master和workers)nginx進程可以服務多個站點。
在ngixn中的表現就是一個server。
虛擬主機有多種方式,主要分爲基於ip,基於域名和基於端口。
基於ip以來的技術是多網卡或者ip別名技術,將訪問的不同ip配置到不同的server中去。這種方法其實不是很好,建議使用基於域名,好記憶一點,而且在一個ip下,就可以設置虛擬主機,因爲一個ip可以綁定多個域名。基於端口就太常見了,這裏不多說。

返回信息壓縮gzip

response中,返回的信息使用gzip壓縮,可以使文件大小降低到30%甚至更多,大大提高效率和節省網絡帶寬。在http作用中使用gzip指令gizp on開啓壓縮。

發佈了39 篇原創文章 · 獲贊 6 · 訪問量 9547
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章