成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

深入 Nginx 之配置篇

Noodles / 1921人閱讀

摘要:常用配置項(xiàng)在工作中,我們與打交道更多的是通過(guò)其配置文件來(lái)進(jìn)行。設(shè)置毎個(gè)進(jìn)程的最大文件打開數(shù)。設(shè)置事件驅(qū)動(dòng)模型使用。是支持的高性能事件驅(qū)動(dòng)庫(kù)之一。必須和搭配使用。其他配置里有這一項(xiàng),它是用來(lái)根據(jù)請(qǐng)求中的來(lái)為其匹配相應(yīng)的處理規(guī)則。

常用配置項(xiàng)

在工作中,我們與 Nginx 打交道更多的是通過(guò)其配置文件來(lái)進(jìn)行。那么掌握這些配置項(xiàng)各自的作用就很有必要了。

首先,nginx.conf 的內(nèi)容通常是這樣的:

...              
...            #核心摸塊

events {        #事件模塊
 
   ...
}

http {     # http 模塊

    server {      # server塊
     
        location [PATTERN] {  # location塊
        
            ...
        }
        location [PATTERN] {
        
            ...
        }
    }
    server {
      ...
    }
    
}

mail {     # mail 模塊
     
     server {    # server塊
          ...
    }

}

我們依次看一下每個(gè)模塊一般有哪些配置項(xiàng):

核心模塊
user admin; #配置用戶或者組。

worker_processes 4; #允許生成的進(jìn)程數(shù),默認(rèn)為1 

pid /nginx/pid/nginx.pid; #指定 nginx 進(jìn)程運(yùn)行文件存放地址 

error_log log/error.log debug; #錯(cuò)誤日志路徑,級(jí)別。
事件模塊
events { 
    accept_mutex on; #設(shè)置網(wǎng)路連接序列化,防止驚群現(xiàn)象發(fā)生,默認(rèn)為on 
    
    multi_accept on; #設(shè)置一個(gè)進(jìn)程是否同時(shí)接受多個(gè)網(wǎng)絡(luò)連接,默認(rèn)為off 
    
    use epoll; #事件驅(qū)動(dòng)模型select|poll|kqueue|epoll|resig
    
    worker_connections 1024; #最大連接數(shù),默認(rèn)為512
}
http 模塊
http {
    include       mime.types;   #文件擴(kuò)展名與文件類型映射表
    
    default_type  application/octet-stream; #默認(rèn)文件類型,默認(rèn)為text/plain
    
    access_log off; #取消服務(wù)日志    

    sendfile on;   #允許 sendfile 方式傳輸文件,默認(rèn)為off,可以在http塊,server塊,location塊。
    
    sendfile_max_chunk 100k;  #每個(gè)進(jìn)程每次調(diào)用傳輸數(shù)量不能大于設(shè)定的值,默認(rèn)為0,即不設(shè)上限。
    
    keepalive_timeout 65;  #連接超時(shí)時(shí)間,默認(rèn)為75s,可以在http,server,location塊。

    server 
    {
            keepalive_requests 120; #單連接請(qǐng)求上限次數(shù)。
            
            listen 80; #監(jiān)聽端口
            
            server_name  127.0.0.1;   #監(jiān)聽地址      
            
            index index.html index.htm index.php;
            
            root your_path;  #根目錄
          
            location ~ .php$
            {
                  fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
                  
                  #fastcgi_pass 127.0.0.1:9000;
                  
                  fastcgi_index index.php;
                  
                  include fastcgi_params;
            }

    }
}
配置項(xiàng)解析

worker_processes
worker_processes 用來(lái)設(shè)置 Nginx 服務(wù)的進(jìn)程數(shù)。該值推薦使用 CPU 內(nèi)核數(shù)。

worker_cpu_affinity
worker_cpu_affinity 用來(lái)為每個(gè)進(jìn)程分配CPU的工作內(nèi)核,參數(shù)有多個(gè)二進(jìn)制值表示,每一組代表一個(gè)進(jìn)程,每組中的每一位代表該進(jìn)程使用CPU的情況,1代表使用,0代表不使用。所以我們使用 worker_cpu_affinity 0001 0010 0100 1000;來(lái)讓進(jìn)程分別綁定不同的核上。默認(rèn)情況下worker進(jìn)程不綁定在任何一個(gè)CPU上。

worker_rlimit_nofile

設(shè)置毎個(gè)進(jìn)程的最大文件打開數(shù)。如果不設(shè)的話上限就是系統(tǒng)的 ulimit –n的數(shù)字,一般為65535。

worker_connections

設(shè)置一個(gè)進(jìn)程理論允許的最大連接數(shù),理論上越大越好,但不可以超過(guò) worker_rlimit_nofile 的值。

use epoll

設(shè)置事件驅(qū)動(dòng)模型使用 epoll。epoll 是 Nginx 支持的高性能事件驅(qū)動(dòng)庫(kù)之一。是公認(rèn)的非 常優(yōu)秀的事件驅(qū)動(dòng)模型。

accept_mutex off

關(guān)閉網(wǎng)絡(luò)連接序列化,當(dāng)其設(shè)置為開啟的時(shí)候,將會(huì)對(duì)多個(gè) Nginx 進(jìn)程接受連接進(jìn)行序列化,防止多個(gè)進(jìn)程對(duì)連接的爭(zhēng)搶。當(dāng)服務(wù)器連接數(shù)不多時(shí),開啟這個(gè)參數(shù)會(huì)讓負(fù)載有一定程度的降低。但是當(dāng)服務(wù)器的吞吐量很大時(shí),為了效率,請(qǐng)關(guān)閉這個(gè)參數(shù);并且關(guān)閉這個(gè)參數(shù)的時(shí)候也可以讓請(qǐng)求在多個(gè) worker 間的分配更均衡。所以我們?cè)O(shè)置 accept_mutex off;

multi_accept on

設(shè)置一個(gè)進(jìn)程可同時(shí)接受多個(gè)網(wǎng)絡(luò)連接

Sendfile on

Sendfile是 Linux2.0 以后的推出的一個(gè)系統(tǒng)調(diào)用,它能簡(jiǎn)化網(wǎng)絡(luò)傳輸過(guò)程中的步驟,提高服務(wù)器性能。

不用 sendfile的傳統(tǒng)網(wǎng)絡(luò)傳輸過(guò)程:

硬盤 >> kernel buffer >> user buffer >> kernel socket buffer >> 協(xié)議棧

用 sendfile()來(lái)進(jìn)行網(wǎng)絡(luò)傳輸?shù)倪^(guò)程:

硬盤 >> kernel buffer (快速拷貝到 kernelsocket buffer) >>協(xié)議棧

tcp_nopush on;

設(shè)置數(shù)據(jù)包會(huì)累積一下再一起傳輸,可以提高一些傳輸效率。 tcp_nopush 必須和 sendfile 搭配使用。

tcp_nodelay on;

小的數(shù)據(jù)包不等待直接傳輸。默認(rèn)為on。?看上去是和 tcp_nopush 相反的功能,但是兩邊都為 on 時(shí) nginx 也可以平衡這兩個(gè)功能的使用。

keepalive_timeout

HTTP 連接的持續(xù)時(shí)間。設(shè)的太長(zhǎng)會(huì)使無(wú)用的線程變的太多。這個(gè)根據(jù)服務(wù)器訪問(wèn)數(shù)量、處理速度以及網(wǎng)絡(luò)狀況方面考慮。

send_timeout

設(shè)置 Nginx 服務(wù)器響應(yīng)客戶端的超時(shí)時(shí)間,這個(gè)超時(shí)時(shí)間只針對(duì)兩個(gè)客戶端和服務(wù)器建立連接后,某次活動(dòng)之間的時(shí)間,如果這個(gè)時(shí)間后,客戶端沒(méi)有任何活動(dòng),Nginx服務(wù)器將關(guān)閉連接

gzip on

啟用 gzip,對(duì)響應(yīng)數(shù)據(jù)進(jìn)行在線實(shí)時(shí)壓縮,減少數(shù)據(jù)傳輸量。

gzip_disable "msie6"

Nginx服務(wù)器在響應(yīng)這些種類的客戶端請(qǐng)求時(shí),不使用 Gzip 功能緩存應(yīng)用數(shù)據(jù),gzip_disable “msie6”對(duì)IE6瀏覽器的數(shù)據(jù)不進(jìn)行 GZIP 壓縮。

常用的配置項(xiàng)大致這些,對(duì)于不同的業(yè)務(wù)場(chǎng)景,有的需要額外的其他配置項(xiàng),這里不做展開。

其他

http 配置里有 location 這一項(xiàng),它是用來(lái)根據(jù)請(qǐng)求中的 uri 來(lái)為其匹配相應(yīng)的處理規(guī)則。

location 查找規(guī)則
location  = / {
  # 精確匹配 / ,主機(jī)名后面不能帶任何字符串
  [ config A ]
}

location  / {
  # 因?yàn)樗械牡刂范家?/ 開頭,所以這條規(guī)則將匹配到所有請(qǐng)求
  # 但是正則和最長(zhǎng)字符串會(huì)優(yōu)先匹配
  [ config B ]
}

location /documents/ {
  # 匹配任何以 /documents/ 開頭的地址,匹配符合以后,還要繼續(xù)往下搜索
  # 只有后面的正則表達(dá)式?jīng)]有匹配到時(shí),這一條才會(huì)采用這一條
  [ config C ]
}

location ~ /documents/Abc {
  # 匹配任何以 /documents/Abc 開頭的地址,匹配符合以后,還要繼續(xù)往下搜索
  # 只有后面的正則表達(dá)式?jīng)]有匹配到時(shí),這一條才會(huì)采用這一條
  [ config CC ]
}

location ^~ /images/ {
  # 匹配任何以 /images/ 開頭的地址,匹配符合以后,停止往下搜索正則,采用這一條。
  [ config D ]
}

location ~* .(gif|jpg|jpeg)$ {
  # 匹配所有以 gif,jpg或jpeg 結(jié)尾的請(qǐng)求
  # 然而,所有請(qǐng)求 /images/ 下的圖片會(huì)被 config D 處理,因?yàn)?^~ 到達(dá)不了這一條正則
  [ config E ]
}

location /images/ {
  # 字符匹配到 /images/,繼續(xù)往下,會(huì)發(fā)現(xiàn) ^~ 存在
  [ config F ]
}

location /images/abc {
  # 最長(zhǎng)字符匹配到 /images/abc,繼續(xù)往下,會(huì)發(fā)現(xiàn) ^~ 存在
  # F與G的放置順序是沒(méi)有關(guān)系的
  [ config G ]
}

location ~ /images/abc/ {
  # 只有去掉 config D 才有效:先最長(zhǎng)匹配 config G 開頭的地址,繼續(xù)往下搜索,匹配到這一條正則,采用
    [ config H ]
}

正則查找優(yōu)先級(jí)從高到低依次如下:

“ = ” 開頭表示精確匹配,如 A 中只匹配根目錄結(jié)尾的請(qǐng)求,后面不能帶任何字符串。

“ ^~ ” 開頭表示uri以某個(gè)常規(guī)字符串開頭,不是正則匹配

“ ~ ” 開頭表示區(qū)分大小寫的正則匹配;

“ ~* ”開頭表示不區(qū)分大小寫的正則匹配

“ / ” 通用匹配, 如果沒(méi)有其它匹配,任何請(qǐng)求都會(huì)匹配到

負(fù)載均衡配置

Nginx 的負(fù)載均衡需要用到 upstream 模塊,可通過(guò)以下配置來(lái)實(shí)現(xiàn):

upstream test-upstream {
    ip_hash; # 使用 ip_hash 算法分配
 
    server 192.168.1.1; # 要分配的 ip
    server 192.168.1.2;
}

server {

    location / {       
        proxy_pass http://test-upstream;
    }
    
}

上面的例子定義了一個(gè) test-upstream 的負(fù)載均衡配置,通過(guò) proxy_pass 反向代理指令將請(qǐng)求轉(zhuǎn)發(fā)給該模塊進(jìn)行分配處理。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40361.html

相關(guān)文章

  • 深入 Nginx 配置

    摘要:常用配置項(xiàng)在工作中,我們與打交道更多的是通過(guò)其配置文件來(lái)進(jìn)行。設(shè)置毎個(gè)進(jìn)程的最大文件打開數(shù)。設(shè)置事件驅(qū)動(dòng)模型使用。是支持的高性能事件驅(qū)動(dòng)庫(kù)之一。必須和搭配使用。其他配置里有這一項(xiàng),它是用來(lái)根據(jù)請(qǐng)求中的來(lái)為其匹配相應(yīng)的處理規(guī)則。 常用配置項(xiàng) 在工作中,我們與 Nginx 打交道更多的是通過(guò)其配置文件來(lái)進(jìn)行。那么掌握這些配置項(xiàng)各自的作用就很有必要了。 首先,nginx.conf 的內(nèi)容通常...

    everfly 評(píng)論0 收藏0
  • 深入 Nginx 配置

    摘要:常用配置項(xiàng)在工作中,我們與打交道更多的是通過(guò)其配置文件來(lái)進(jìn)行。設(shè)置毎個(gè)進(jìn)程的最大文件打開數(shù)。設(shè)置事件驅(qū)動(dòng)模型使用。是支持的高性能事件驅(qū)動(dòng)庫(kù)之一。必須和搭配使用。其他配置里有這一項(xiàng),它是用來(lái)根據(jù)請(qǐng)求中的來(lái)為其匹配相應(yīng)的處理規(guī)則。 常用配置項(xiàng) 在工作中,我們與 Nginx 打交道更多的是通過(guò)其配置文件來(lái)進(jìn)行。那么掌握這些配置項(xiàng)各自的作用就很有必要了。 首先,nginx.conf 的內(nèi)容通常...

    seal_de 評(píng)論0 收藏0
  • 深入 Nginx 架構(gòu)

    摘要:請(qǐng)求的多階段異步處理多階段異步處理請(qǐng)求與事件驅(qū)動(dòng)架構(gòu)是密切相關(guān)的,也就是說(shuō),請(qǐng)求的多階段異步處理只能基于事件驅(qū)動(dòng)架構(gòu)實(shí)現(xiàn)。 前言 最近在讀 Nginx 相關(guān)的書籍,做一下讀書筆記。 Nginx 作為業(yè)界知名的高性能服務(wù)器,被廣泛的應(yīng)用。它的高性能正是由于其優(yōu)秀的架構(gòu)設(shè)計(jì),其架構(gòu)主要包括這幾點(diǎn):模塊化設(shè)計(jì)、事件驅(qū)動(dòng)架構(gòu)、請(qǐng)求的多階段異步處理、管理進(jìn)程與多工作進(jìn)程設(shè)計(jì)、內(nèi)存池的設(shè)計(jì),以下內(nèi)...

    linkin 評(píng)論0 收藏0
  • 深入 Nginx 架構(gòu)

    摘要:請(qǐng)求的多階段異步處理多階段異步處理請(qǐng)求與事件驅(qū)動(dòng)架構(gòu)是密切相關(guān)的,也就是說(shuō),請(qǐng)求的多階段異步處理只能基于事件驅(qū)動(dòng)架構(gòu)實(shí)現(xiàn)。 前言 最近在讀 Nginx 相關(guān)的書籍,做一下讀書筆記。 Nginx 作為業(yè)界知名的高性能服務(wù)器,被廣泛的應(yīng)用。它的高性能正是由于其優(yōu)秀的架構(gòu)設(shè)計(jì),其架構(gòu)主要包括這幾點(diǎn):模塊化設(shè)計(jì)、事件驅(qū)動(dòng)架構(gòu)、請(qǐng)求的多階段異步處理、管理進(jìn)程與多工作進(jìn)程設(shè)計(jì)、內(nèi)存池的設(shè)計(jì),以下內(nèi)...

    zhangrxiang 評(píng)論0 收藏0
  • [轉(zhuǎn)]深入 NGINX: 為性能和擴(kuò)展所做設(shè)計(jì)

    摘要:常規(guī)的網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)都是為每個(gè)連接分配一個(gè)線程或進(jìn)程。深入理解進(jìn)程每個(gè)進(jìn)程都是用配置進(jìn)行初始化的,并且由主進(jìn)程提供了一組監(jiān)聽套接字。套接字上發(fā)生事件后,進(jìn)程開始進(jìn)行處理監(jiān)聽套接字上的事件意味著有個(gè)客戶端發(fā)起了一盤新的象棋游戲。 NGINX在web性能上的表現(xiàn)尤為出眾,這完全得益于其設(shè)計(jì)方式,許多web和應(yīng)用服務(wù)器都是基于線程或進(jìn)程這種簡(jiǎn)單的架構(gòu),NGINX用了一種精妙的事件驅(qū)動(dòng)架構(gòu),在現(xiàn)...

    caoym 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<