最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx進階實用配置(壓縮、代理、限流、請求合并)

 更新時間:2026年04月30日 09:37:53   作者:遇見火星  
這篇文章主要介紹了Nginx進階實用配置,包括壓縮、代理、限流、請求合并,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Nginx是個性能很強的Web服務器和反向代理工具,配置靈活、功能多,能優(yōu)化網站速度、穩(wěn)住服務穩(wěn)定性。這篇文章就聚焦四個最常用的場景——GZIP壓縮、免備案反向代理、流量限流、請求合并。

一、開GZIP壓縮:讓資源變小,加載更快

1.1 為啥要開壓縮?

網站里的HTML、CSS、JS這些文件,默認體積不算小,傳輸到用戶瀏覽器要花時間。GZIP能把這些文件“壓小”,一般能壓到原來的30%-50%,傳得快了,網頁加載自然就快,用戶體驗也更好。

1.2 兩種配置方案

下面給兩套配置,一套簡單基礎,一套優(yōu)化到位適合生產環(huán)境,根據自己服務器性能選就行。

基礎配置

http {
    # 開啟GZIP壓縮功能
    gzip on;
    # 文件小于1KB就不壓縮了,壓完變化不大,還浪費服務器資源
    gzip_min_length 1k;
    # 壓縮等級1-10,數字越大壓得越狠,但越費服務器CPU
    gzip_comp_level 2;
    # 指定要壓縮的文件類型,涵蓋常用的文本、腳本、圖片
    gzip_types text/bash application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    # 開啟這個響應頭,讓代理服務器能識別是否已壓縮(建議開)
    gzip_vary on;
}

生產環(huán)境優(yōu)化配置

這套配置在壓縮效果和服務器CPU消耗之間找了平衡,還加了兼容老瀏覽器、減少損耗的設置,適合正式上線的網站用。

http {
    # ===== GZIP 核心配置 =====
    # 開啟GZIP壓縮
    gzip on;
    # 小于1KB的文件不壓縮
    gzip_min_length 1k;
    # 壓縮等級設為6,性價比最高(既壓得小,又不怎么費CPU)
    gzip_comp_level 6;
    # 要壓縮的文件類型,覆蓋幾乎所有常用文本資源
    gzip_types 
        text/plain 
        text/css 
        text/xml 
        text/javascript 
        application/javascript 
        application/x-javascript 
        application/json 
        application/xml 
        application/xml+rss 
        image/jpeg 
        image/gif 
        image/png;
    # 開啟響應頭,適配代理服務器
    gzip_vary on;
    # 最低支持HTTP 1.1協議的壓縮(不用改,默認就是這個)
    gzip_http_version 1.1;
    # 設置壓縮緩沖區(qū)大?。?個4KB緩沖區(qū),適配大多數場景)
    gzip_buffers 2 4k;
    # 優(yōu)先用提前壓好的.gz文件(比如自己手動壓的CSS.gz),減少服務器實時壓縮的損耗
    gzip_static on;
    # 不給IE6瀏覽器開壓縮(老瀏覽器兼容差,開了可能頁面亂碼)
    gzip_disable "MSIE [1-6].";
}

二、反向代理實現免備案訪問

2.1 原理很簡單

國內服務器搭網站,必須先備案,沒備案的域名會被防火墻擋住,用戶打不開。想繞開這個限制,就找一臺已備案的服務器(或者香港、海外的免備案服務器,叫它服務器A),用戶訪問服務器A的合法域名,A再把請求轉發(fā)到國內沒備案的服務器(服務器B),這樣用戶就能正常打開B上的網站了。

2.2 服務器A的配置示例

下面是服務器A上的Nginx配置,核心就是把A的域名請求,轉發(fā)到國內沒備案的服務器B。

server {
    listen 80;
    server_name 免備案域名; # 換成服務器A的合法域名(已備案/免備案均可)
    location / {
        proxy_pass 服務器B的IP:端口; # 換成國內未備案服務器B的IP和端口(比如192.168.1.100:8080)
    }
}

提示:配置完要重啟Nginx才生效,另外要確保服務器A和B能正常通信,沒有被防火墻攔截端口。

三、流量限流:防止服務被沖垮

Nginx有兩種限流方式,一種是控制單位時間內的請求次數,一種是控制同時連接的數量,根據需求選,也能一起用,避免網站被突發(fā)流量或惡意請求搞崩。

3.1 限制請求頻率(比如每秒最多10個請求)

用Nginx自帶的模塊,按IP來限制請求速度,比如限制同一個IP每秒最多發(fā)10個請求,多了就拒絕。核心是兩個配置指令,一個定規(guī)則,一個用規(guī)則。

http {
    # 定義限流規(guī)則:按客戶端IP算,分配10MB內存存訪問記錄,每秒最多10個請求
    limit_req_zone $binary_remote_addr zone=serviceRateLimit:10m rate=10r/s;
    server {
        listen 80;
        server_name 你的域名; # 換成自己的域名或服務器IP
        location / {
            # 應用上面定義的限流規(guī)則
            limit_req zone=serviceRateLimit;
            # 把請求轉發(fā)到后端服務(換成自己的后端地址,沒有后端就刪掉這句)
            proxy_pass http://upstream_cluster1;
        }
    }
}

參數說明:

  •  binary_remote_addr:按用戶IP限流,加個binary_是為了節(jié)省服務器內存;
  •  zone=serviceRateLimit:10m:開辟一塊10MB的內存,名字叫serviceRateLimit,專門存IP訪問記錄,10MB大概能存16萬個IP的信息;
  •  rate=10r/s:每秒最多10個請求,實際是每100毫秒處理1個,超過這個速度的請求直接拒絕。

3.2 處理突發(fā)流量(比如突然多20個請求)

上面的基礎配置太死板,比如突然來了20個請求,超過每秒10個的部分都會被拒,體驗不好??梢约觾蓚€參數,允許臨時多處理幾個請求,還不耽誤速度。

http {
    # 定義限流規(guī)則:按客戶端IP,10MB內存,每秒10個請求
    limit_req_zone $binary_remote_addr zone=serviceRateLimit:10m rate=10r/s;
    server {
        listen 80;
        server_name 你的域名; # 換成自己的域名/IP
        location / {
            # 允許額外20個突發(fā)請求,且這20個請求立即處理,不延遲
            limit_req zone=serviceRateLimit burst=20 nodelay;
            # 轉發(fā)到后端服務(換成自己的后端地址)
            proxy_pass http://upstream_cluster1;
        }
    }
}

說明:burst=20就是允許臨時多來20個請求,相當于留了20個“備用名額”;nodelay表示這20個請求不用排隊,立馬處理。但備用名額用完后,后續(xù)請求還是要按每秒10個的速度來,保證服務器不被壓垮。

3.3 限制并發(fā)連接數(比如同一IP最多20個連接)

除了限制請求頻率,還能限制同時連接的數量,比如同一個IP最多同時連20個,整個服務器最多同時連100個,避免單個用戶或整體流量占滿資源。

http {
    # 按IP限制連接數:10MB內存存記錄
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    # 按服務器限制總連接數:10MB內存存記錄
    limit_conn_zone $server_name zone=perserver:10m;
    server {
        listen 80;
        server_name 你的域名; # 換成自己的域名/IP
        # 單個IP最多同時20個連接
        limit_conn perip 20;
        # 整個服務器最多同時100個連接
        limit_conn perserver 100;
        location / {
            # 轉發(fā)到后端服務(換成自己的后端地址)
            proxy_pass http://upstream_cluster1;
        }
    }
}

注意:只有后端服務器處理完請求頭后,才會算一個連接數,避免無效連接占用名額。

四、請求合并:減少請求次數,加載更快

瀏覽器對同一個域名,同時只能發(fā)6個左右的請求,要是網頁有十幾個CSS、JS文件,就得排隊加載,很慢。用Nginx的concat模塊,能把多個CSS或JS文件合并成一個,減少請求次數,加載速度就快了。

4.1 安裝concat模塊(必須編譯安裝)

這個模塊不是Nginx自帶的,得手動下載源碼,和Nginx一起編譯安裝,步驟如下(以Nginx 1.4.2版本為例,跟著敲命令就行):

# 進入源碼存放目錄
cd /usr/local/src/
# 下載Nginx和concat模塊的源碼
wget http://nginx.org/download/nginx-1.4.2.tar.gz
wget https://github.com/alibaba/nginx-http-concat/archive/master.zip -O nginx-http-concat-master.zip
# 解壓下載的文件
unzip nginx-http-concat-master.zip
tar -xzvf nginx-1.4.2.tar.gz
# 進入Nginx源碼目錄,配置編譯參數
cd nginx-1.4.2
./configure --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module \
--add-module=../nginx-http-concat-master
# 編譯并安裝
make
make install

驗證:安裝完后,Nginx源碼目錄下會出現objs文件夾,就說明安裝成功了。

4.2 核心配置指令

  •  開啟/關閉合并:concat on | off,默認是off(關閉),可以在全局、單個服務器或單個路徑下設置;
  •  可合并的文件類型:concat_types MIME types,默認只能合并CSS和JS,需要其他類型可以自己加;
  •  其他參數:比如最多合并多少個文件、合并后用什么分隔符,后面配置示例里會講,按需調整就行。

4.3 配置示例和使用方法

server {
    listen       80;
    server_name localhost;
    index index.html index.htm;
    root  /html; # 網站文件存放目錄,換成自己的路徑
    location /static/css/ {
        concat on;    // 開啟文件合并功能
        concat_max_files 20; // 最多合并20個文件,太多了反而不方便維護
        concat_delimiter /* 自定義分隔符 */;  // 合并后用這個符號區(qū)分不同文件內容
        concat_unique off; // 允許合并不同類型的資源(默認只允許同類型合并)
        concat_types text/css application/javascript; // 允許合并CSS和JS
    }
    location /status {
        stub_status on;
        access_log   off;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js)$ {
        expires      off;
    }
}

前端怎么用:在網頁里引用文件時,用??把多個文件路徑連起來就行,示例如下:

<link rel="stylesheet" href="/static/css/??a.css,b.css,c.css" rel="external nofollow" >

生效方法:配置完執(zhí)行命令/usr/local/nginx/sbin/nginx -s reload重啟Nginx,就能實現文件合并了。

五、經驗之談

上面講的GZIP壓縮、免備案反向代理、流量限流、請求合并,都是Nginx實戰(zhàn)中最常用的優(yōu)化手段。配置的時候不用死記參數,根據自己服務器的性能、網站流量大小來調整就行。每次改完配置,記得用nginx -t檢查語法有沒有錯,再重啟Nginx生效,把這些配置用好了,網站加載更快、運行更穩(wěn),不管是小站點還是高并發(fā)服務都適用。

到此這篇關于Nginx進階實用配置(壓縮、代理、限流、請求合并)的文章就介紹到這了,更多相關Nginx 壓縮、代理、限流、請求合并內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • prometheus監(jiān)控nginx的實現步驟

    prometheus監(jiān)控nginx的實現步驟

    本文主要介紹了prometheus監(jiān)控nginx的實現步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-05-05
  • Nginx中配置過濾爬蟲的User-Agent的簡單方法

    Nginx中配置過濾爬蟲的User-Agent的簡單方法

    這篇文章主要介紹了Nginx中配置過濾爬蟲的User-Agent的簡單方法,文中羅列了一些常用搜索引擎的爬蟲名稱以免造成不必要的過濾,需要的朋友可以參考下
    2016-01-01
  • Centos7.3 安裝部署Nginx并配置https的方法步驟

    Centos7.3 安裝部署Nginx并配置https的方法步驟

    這篇文章主要介紹了Centos7.3 安裝部署Nginx并配置https的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • nginx編譯安裝出現的常見錯誤及解決方法

    nginx編譯安裝出現的常見錯誤及解決方法

    這篇文章給大家介紹了nginx在編譯安裝過程中容易出現的常見錯誤以及解決方法,文中有詳細的代碼講解,對我們的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-08-08
  • Nginx中的proxy_set_header核心參數解析

    Nginx中的proxy_set_header核心參數解析

    文章詳解Nginx中proxy_set_header指令的語法與用途,涵蓋設置Host頭、傳遞真實IP、協議信息、連接控制、CORS支持、自定義頭及緩存管理,強調需注意指令位置、空值處理和特殊頭格式,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • 利用Nginx反向代理功能解決WEB網站80端口被封的解決方法

    利用Nginx反向代理功能解決WEB網站80端口被封的解決方法

    大陸的網絡環(huán)境,都在天朝神獸的制度下讓我等小P民悲劇一片;動不動就拔網線、封機房;現在更厲害的一招,從網關封殺你的80端口,一旦被封,網站域名就無法訪問
    2012-08-08
  • 詳解php+nginx 服務發(fā)生500 502錯誤排查思路

    詳解php+nginx 服務發(fā)生500 502錯誤排查思路

    這篇文章主要介紹了詳解php+nginx 服務發(fā)生500 502錯誤排查思路,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 詳解proxy_pass根據path路徑轉發(fā)時的

    詳解proxy_pass根據path路徑轉發(fā)時的"/"問題記錄

    這篇文章主要介紹了詳解proxy_pass根據path路徑轉發(fā)時的"/"問題記錄,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Nginx配置及熱升級的詳細介紹

    Nginx配置及熱升級的詳細介紹

    Nginx與Apache一樣,都是web服務器,但是Nginx比Apache多一些功能,比如Nginx可以做代理,可以做負載均衡,這篇文章主要介紹了Nginx配置以及熱升級,需要的朋友可以參考下
    2024-07-07
  • Nginx優(yōu)化配置和內核優(yōu)化 實現突破十萬并發(fā)

    Nginx優(yōu)化配置和內核優(yōu)化 實現突破十萬并發(fā)

    Nginx是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。本文介紹一些Nginx優(yōu)化代碼參數等
    2013-06-06

最新評論

崇义县| 屏边| 寻乌县| 普安县| 万盛区| 胶南市| 古浪县| 错那县| 嘉荫县| 冷水江市| 安西县| 郎溪县| 北辰区| 鹿泉市| 菏泽市| 来安县| 应城市| 沙洋县| 大足县| 青河县| 竹北市| 长汀县| 观塘区| 宜黄县| 宕昌县| 山东省| 揭阳市| 阜康市| 察雅县| 林州市| 阿城市| 霍林郭勒市| 罗山县| 苗栗市| 江城| 山西省| 项城市| 永城市| 阳朔县| 新化县| 阿克苏市|