Nginx配置指北之gzip

不管是前端仍是後端,在部署項目時,時常免不了用到Nginx,小項目也時常作個反向代理啥的。今天就簡單直接,聊一下其中的一個點——gzip。若有錯誤,歡迎指正。javascript

通常服務器端經常使用的是 UbuntuCentOSLinux 等。本身若沒有服務器,可在本地把玩一下。css

mac 安裝

mac下可直接用brew安裝,若未安裝brew可先行安裝html

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install nginx

默認配置

安裝完成後會看到命令行含有如下信息,能夠看到 nginx.conf所在路徑,這正是咱們要找的配置文件。同時含有端口信息,當啓動Nginx時,能夠直接訪問http://localhost:8080,當看到下圖所示頁面,即安裝啓動成功。前端

docroot: /usr/local/var/www
default config: /usr/local/etc/nginx/nginx.conf
port:8080

clipboard.png

幾個經常使用命令

啓動:nginx
從新熱啓動:nginx -s reload
關閉:nginx -s stop
測試語法:nginx -tjava

gizp配置:

gzip 相關配置可放在 http{}server{}location{} 層級,若不一樣層級有重複設置優先級爲 location{} > server{} > http{}nginx

  1. 開啓 gzip壓縮git

    gzip on;
  2. gzip http 版本github

    gzip_http_version 1.0;
  3. 禁止IE6進行gzip壓縮(固然如今已經基本沒有人使用IE6了)web

    gzip_disable "MSIE [1-6]";
  4. 壓縮級別(1~9,通常爲平衡文件大小和CPU使用,5是經常使用值,固然跟實際機器的狀況有關)shell

    gzip_comp_level 5;
  5. 最小壓縮臨界值(默認的是20字節)

    gzip_min_length 20;
  6. 壓縮經過代理連接的客戶端數據

    gzip_proxied any;
  7. 採用http協議版本 默認是1.1 ,對於1.0的請求不會壓縮,若是設置成1.0,表示http1.0以上 的版本都會壓縮。(若是使用了proxy_pass 進行反向代理,那麼nginx和後端的 upstream server之間默認是用 HTTP/1.0協議通訊的。)

    gzip_http_version 1.0;
  8. 代理緩存壓縮和原始版本資源,避免客戶端因Accept-Encoding不支持gzip而發生錯誤的現象(如今通常都採用gzip)

    gzip_vary on;
  9. 壓縮文件類型(默認老是壓縮 text/html類型,其中特別說明的是application/javascript和text/javascript最好都加上,若頁面script標籤的type不一樣則有可能發生部分js文件不會壓縮,默認type爲application/javascript)

    gzip_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/svg+xml image/x-icon text/css text/plain text/javascript text/x-component;
  10. 若是有已經壓縮的(.gz)或者提供靜態文件服務,能夠設置爲on。若是不是這樣,最好設置爲off,由於這會形成額外的I/O開銷。一個比較好的處理方式是放在location{}或server{}級別單獨處理。

    gzip_static on;
  11. 壓縮結果數據流存儲所用空間,下面表示以8k爲單位,按照原始數據大小以8k爲單位的16倍申請內存。默認值是申請跟原始數據相同大小的內存空間去存儲gzip壓縮結果。

    gzip_buffers 16 8k;
相關文章
相關標籤/搜索