Nginx靜態資源Web服務


1.原理

2.靜態資源類型

3.靜態資源服務場景-CDN

配置語法

1.配置語法,文件讀取

Syntax:sendfile on|off;

Default:sendfile off;

Context:http,server,location,if in location

引讀:--with-file-aio 異步文件讀取

2.配置語法-tcp_nopush

Syntax:tcp_nopush on | off;

Default:tcp_nopush off;

Context:http,server,location

作用:sendfile開啟的情況下,提高網絡包的傳輸效率,將多個文件,一次傳輸

3.配置語法-tcp_nodelay

Syntax:tcp_nodelay on | off;

Default:tcp_nodelay on;

Context:http,server,location

作用:keepalive連接下,提高網絡包的傳輸實時性,與上個語法的作用相反

4.配置語法-壓縮

Syntax:gzip on | off;

Default:gzip off;

Context:http,server,location,if in location

作用:壓縮傳輸

5.配置語法-壓縮比率

Syntax:gzip_comp_level level;

Default:gzip_comp_level 1;

Context:http,server,location

6.配置語法-壓縮http協議的版本

Syntax:gzip_http_version 1.0 | 1.1;

Default:gzip_http_version 1.1;

Context:http,server,location

7.擴展Nginx壓縮模塊

http_gzip_static_module - 預讀gzip功能  # 預先將文件壓縮

http_gunzip_module - 應用支持gunzip的壓縮方式   # 只用於部分瀏覽器不支持解壓的時候才用到

演示壓縮文件

將一個test.png格式的文件,放在下列目錄

/opt/app/code/images


    location ~ .*\.(jpg|gif|png)$ {        # 自動匹配到(jpg|gif|png)格式
        
        root /opt/app/code/images;
    }

檢查語法后,重啟nginx

訪問192.168.96.188/test.png。此時的圖片為1.1M

將配置文件修改如下

server {
    listen       80;
    server_name  www.test.com;

    sendfile on;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;


    location ~ .*\.(jpg|gif|png)$ {
        gzip on;                        #將壓縮文件的語法打開
        gzip_http_version 1.1;            # http協議版本
        gzip_comp_level 2;            # 壓縮的級別為2
        gzip_types text/plain application/javascript applicattion/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;    # 支持的格式類型
        root /opt/app/code/images;
    }


    location ~ .*\.(txt|xml)$ {
        #gzip on;
        #gzip_http_version 1.1;
        #gzip_comp_level 2;
        #gzip_types text/plain application/javascript applicattion/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
        root /opt/app/code/doc;
    }

    location ~ ^/download {
        #gzip_static on;
        #tcp_nopush on;
        root /opt/app/code;
    }

    location / {
        root   /opt/app/code;
        random_index on;
        #index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

修改好以后,重啟nginx

再次訪問192.168.96.188/test.png

再次查看圖片被壓縮。

相對於圖片,文件的比例壓縮會更大一下

直接將10M的txt文件壓縮成了72kb

 

http_gzip_static_module - 預讀gzip功能,演示

在download目錄下,上傳一個10M的test.img文件,目前語法是關閉

使用gzip test.img壓縮文件(預讀壓縮)

這時候訪問192.168.96.188/test.img。會發生報錯

修改配置文件,加入如下配置


    location ~ ^/download {
        gzip_static on;        # gz格式,預讀文件功能開啟
        tcp_nopush on;        # 提高速率
        root /opt/app/code;
    }

同樣訪問192.168.96.188/download/test.img,可以正常訪問了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM