Nginx的安裝與配置

nginx的主要功能

http服務(wù)器
http服務(wù)器的反向代理
imap/pop3郵件服務(wù)器
tcp/udp協(xié)議的偽四層負(fù)載均衡調(diào)度(stream),但是受到系統(tǒng)套接字?jǐn)?shù)量的限制慰于。

nginx的安裝配置:

官方的預(yù)制包:http://nginx.org/packages/centos/7/x86_64/RPMS/
使用EPEL源安裝下面的epel源白翻,點擊進(jìn)去后選擇適合的版本。
Fedora-EPEL
阿里云的epel源

編譯安裝:
yum groupinstall "Development Tools" "Server Platform Development"
yum install pcre-devel openssl-devel zlib-devel
useradd -r nginx
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio
make && make install

Nginx的程序架構(gòu):

master/worker
    一個master進(jìn)程:
        負(fù)載加載和分析配置文件巧娱、管理worker進(jìn)程拒课、平滑升級
    一個或多個worker進(jìn)程
        處理并響應(yīng)用戶請求
    緩存相關(guān)的進(jìn)程:
        cache loader:載入緩存對象
        cache manager:管理緩存對象
    特性:異步I/O、事件驅(qū)動和非阻塞I/O
        并發(fā)請求處理:通過epoll/select
        文件IO:高級IO sendfile足删,異步寿谴,mmap

介紹一下I/O模型

分為同步I/O和異步I/O
同步I/O:阻塞性I/O锁右、非阻塞性I/O失受、復(fù)用性I/O、事件驅(qū)動性I/O
異步I/O:AIO(Linux)咏瑟、LOCP(Windows)
一般有兩種類型:網(wǎng)絡(luò)I/O和磁盤I/O

I/O系統(tǒng)調(diào)用過程

第一步拂到,用戶空間的進(jìn)程向內(nèi)核發(fā)起調(diào)用,內(nèi)核向磁盤調(diào)用資源到內(nèi)核內(nèi)存
第二步码泞,進(jìn)程把調(diào)用的資源從內(nèi)核內(nèi)存拷貝到用戶空間的內(nèi)存
類型

阻塞性(掛起進(jìn)程)兄旬,一直等待直到請求被處理,返回結(jié)果

非阻塞性(不掛起進(jìn)程)余寥,進(jìn)程不用一直等待數(shù)據(jù)處理結(jié)果领铐,但會反復(fù)查看數(shù)據(jù)處理情況,直到數(shù)據(jù)處理完成宋舷。性能和阻塞性I/O差不多绪撵。

多路復(fù)用性I/O,I/O多路復(fù)用的函數(shù)也是阻塞的祝蝠,但是其與以上兩種還是有不同的音诈,I/O多路復(fù)用是阻塞在select,poll這樣的系統(tǒng)調(diào)用之上绎狭,而沒有阻塞在真正的I/O系統(tǒng)調(diào)用如recvfrom之上细溅。這個進(jìn)程持續(xù)發(fā)起多個調(diào)用,但是也阻塞在多個調(diào)用上儡嘶。一個進(jìn)程會監(jiān)控發(fā)起的多個系統(tǒng)調(diào)用喇聊。

函數(shù)

  select()最多監(jiān)控1024個請求
  poll()

事件驅(qū)動性I/O:進(jìn)程發(fā)起系統(tǒng)調(diào)用,發(fā)起調(diào)用之后進(jìn)程可以去處理其他請求蹦狂,等到數(shù)據(jù)包準(zhǔn)備好后誓篱,系統(tǒng)通過進(jìn)程留下的信息回調(diào)進(jìn)程通知數(shù)據(jù)包準(zhǔn)備完成邻耕。進(jìn)程再去把數(shù)據(jù)復(fù)制到應(yīng)用空間,但是這個復(fù)制過程還是阻塞的燕鸽。使用epool函數(shù)

系統(tǒng)調(diào)用函數(shù)

 epoll()epool使用句柄創(chuàng)建3個函數(shù)兄世,沒有連接最大限制

異步I/O,AIO:這類函數(shù)的工作機(jī)制是告知內(nèi)核啟動某個操作啊研,并讓內(nèi)核在整個操作(包括將數(shù)據(jù)從內(nèi)核拷貝到用戶空間)完成后通知我們御滩。

nginx模塊:高度模塊化,但其模塊早期不支持DSO機(jī)制党远;近期版本支持動態(tài)裝載和卸載削解;

模塊分類:

核心模塊:core module
標(biāo)準(zhǔn)模塊:
        HTTP modules:
        Standard HTTP modules
        Optional HTTP modules
        Mail modules  
        Stream modules:傳輸層代理模塊

3rd party modules:支持第三方模塊

配置文件的組成部分:

主配置文件:nginx.conf
fastcgi, uwsgi沟娱,scgi等協(xié)議相關(guān)的配置文件
mime.types:支持的mime類型
主程序文件:/usr/sbin/nginx
啟動腳本:nginx.service

變量

內(nèi)建變量:由Nginx模塊引入氛驮,可直接引用;
自定義變量:由用戶使用set命令定義济似;

set variable_name value;
引用變量:$variable_name
nginx的內(nèi)置變量
$args                        此變量與請求行中的參數(shù)相等 注意我請求中的 referer  此變量表示我請求的所有參數(shù)
$args                        這個變量等于GET請求中的參數(shù)矫废。例如,foo=123&bar=blahblah;這個變量只可以被修改
$binary_remote_addr          二進(jìn)制碼形式的客戶端地址砰蠢。
$body_bytes_sent             傳送頁面的字節(jié)數(shù)
$content_length              請求頭中的Content-length字段蓖扑。
$content_type                請求頭中的Content-Type字段。
$cookie_COOKIE cookie        COOKIE的值台舱。
$document_root               當(dāng)前請求在root指令中指定的值律杠。
$document_uri 
$host                        請求中的主機(jī)頭(Host)字段,如果請求中的主機(jī)頭不可用或者空竞惋,則為處理請求的server名稱(處理請求的server的server_name指令的值)柜去。值為小寫,不包含端口拆宛。
$hostname                    機(jī)器名使用 gethostname系統(tǒng)調(diào)用的值
$http_HEADER                 HTTP請求頭中的內(nèi)容嗓奢,HEADER為HTTP請求中的內(nèi)容轉(zhuǎn)為小寫,-變?yōu)開(破折號變?yōu)橄聞澗€)胰挑,例如:$http_user_agent(Uaer-Agent的值), $http_referer...;
$sent_http_HEADER            HTTP響應(yīng)頭中的內(nèi)容蔓罚,HEADER為HTTP響應(yīng)中的內(nèi)容轉(zhuǎn)為小寫,-變?yōu)開(破折號變?yōu)橄聞澗€)瞻颂,例如: $sent_http_cache_control,$sent_http_content_type...;
$is_args                     如果$args設(shè)置豺谈,值為"?",否則為""贡这。
$limit_rate                  這個變量可以限制連接速率茬末。
$nginx_version               當(dāng)前運行的nginx版本號。
$query_string                與$args相同。
$remote_addr                 客戶端的IP地址丽惭。
$remote_port                 客戶端的端口击奶。
$remote_user                 已經(jīng)經(jīng)過Auth Basic Module驗證的用戶名。
$request_filename            當(dāng)前連接請求的文件路徑责掏,由root或alias指令與URI請求生成柜砾。
$request_body                這個變量(0.7.58+)包含請求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比較有意義换衬。
$request_body_file           客戶端請求主體信息的臨時文件名痰驱。
$request_completion          如果請求成功,設(shè)為"OK"瞳浦;如果請求未完成或者不是一系列請求中最后一部分則設(shè)為空担映。
$request_method              這個變量是客戶端請求的動作,通常為GET或POST叫潦。包括0.8.20及之前的版本中饰剥,這個變量總為main request中的動作水援,如果當(dāng)前請求是一個子請求趴生,并不使用這個當(dāng)前請求的動作杠河。
$request_uri                 這個變量等于包含一些客戶端請求參數(shù)的原始URI,它無法修改拔妥,請查看$uri更改或重寫URI忿危。含有參數(shù)的完整的初始URI 如上例子就是
$scheme                      所用的協(xié)議,比如http或者是https没龙,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;
$server_addr                 服務(wù)器地址,在完成一次系統(tǒng)調(diào)用后可以確定這個值缎玫,如果要繞開系統(tǒng)調(diào)用硬纤,則必須在listen中指定地址并且使用bind參數(shù)。
$server_name                 服務(wù)器名稱赃磨。
$server_port                 請求到達(dá)服務(wù)器的端口號筝家。
$server_protocol             請求使用的協(xié)議,通常是HTTP/1.0或HTTP/1.1邻辉。
$uri                         請求中的當(dāng)前URI(不帶請求參數(shù)溪王,參數(shù)位于$args),不同于瀏覽器傳遞的$request_uri的值值骇,它可以通過內(nèi)部重定向莹菱,或者使用index指令進(jìn)行修改。不包括協(xié)議和主機(jī)名吱瘩,例如/foo/bar.html
$proxy_add_x_forwarded_for   變量包含客戶端請求頭中的"X-Forwarded-For"道伟,與$remote_addr用逗號分開,如果沒有"X-Forwarded-For" 請求頭,則$proxy_add_x_forwarded_for等于$remote_addr蜜徽。$remote_addr變量的值是客戶端的IP祝懂。

nginx管理工具的命令

-?,-h           : 打開幫助信息
-v              : 顯示版本信息并退出
-V              : 顯示版本和配置選項信息,然后退出
-t              : 檢測配置文件是否有語法錯誤拘鞋,然后退出
-T              :檢查配置文件并顯示配置文件內(nèi)容
-q              : 在檢測配置文件期間屏蔽非錯誤信息
-s signal       : 給一個nginx主進(jìn)程發(fā)送信號:stop(停止), quit(退出), reopen(重啟), reload(重新加載配置文件)
-p prefix       : 設(shè)置前綴路徑(默認(rèn)是:/usr/local/Cellar/nginx/1.2.6/)
-c filename     : 設(shè)置配置文件(默認(rèn)是:/usr/local/etc/nginx/nginx.conf)
-g directives   : 設(shè)置配置文件外的全局參數(shù)

主配置文件結(jié)構(gòu):

main block:主配置段砚蓬,也即全局配置段;
    event {                #事件驅(qū)動相關(guān)的配置盆色;
                    ...
         }
    http {                  #http/https 協(xié)議相關(guān)的配置段怜械;
            ...
        }
    mail {                  #mail服務(wù)相關(guān)的配置段;
            ...
        }
    stream {                #四層代理配置段傅事;
            ...
            }

配置指令:
main全局配置段常見的配置指令:

分類:
    正常運行必備的配置
    優(yōu)化性能相關(guān)的配置
    用于調(diào)試及定位問題相關(guān)的配置
    事件驅(qū)動相關(guān)的配置  

注意:

(1) 指令必須以分號結(jié)尾缕允;
(2) 支持使用配置變量;
正常運行必備的配置:
1蹭越、user
        Syntax: user user [group];
        Default:    user nobody nobody;
        Context:    main
#定義工作進(jìn)程使用的用戶和組憑據(jù)障本。 如果省略group,則使用其名稱等于user的組响鹃。 

2驾霜、pid /PATH/TO/PID_FILE;
        指定存儲nginx主進(jìn)程進(jìn)程號的文件路徑;
                    
3买置、include file | mask;
        指明包含進(jìn)來的其它配置文件片斷粪糙;
                    
4、load_module file; 新版本才支持
性能優(yōu)化相關(guān)的配置:
1忿项、worker_processes number | auto;
    worker進(jìn)程的數(shù)量蓉冈;通常應(yīng)該等于小于當(dāng)前主機(jī)的cpu的物理核心數(shù);
    auto:當(dāng)前主機(jī)物理CPU核心數(shù)轩触;
    
2寞酿、worker_cpu_affinity cpumask ...;  #綁定worker進(jìn)程到一個cpu核心上,默認(rèn)不綁定脱柱。
    worker_cpu_affinity auto [cpumask]; 
    nginx進(jìn)程的CPU親緣性伐弹;
    
        CPU MASK:
                    0000 0001:0號CPU
                    0000 0010:1號CPU
                    0000 0100:2號CPU

#如果只有四核只用四個數(shù)值就行了,每次增加四個數(shù)值榨为,手動綁定直接在選項后面寫CPU編號惨好,0000 0011:表示0和1號CPU;

3随闺、worker_priority number;
    指定worker進(jìn)程的nice值日川,設(shè)定worker進(jìn)程優(yōu)先級;[-20,20]數(shù)值越小優(yōu)先級越高板壮。
                    
4逗鸣、worker_rlimit_nofile number;,進(jìn)程每接收到一個請求,就要打開一個文件撒璧。
    worker進(jìn)程所能夠打開的文件數(shù)量上限透葛;
調(diào)試、定位問題:
1卿樱、daemon on|off; 在CentOS 6中是on僚害,CentOS 7是off。    #是否以守護(hù)進(jìn)程方式運行Nignx繁调;
    
2萨蚕、master_process on|off;            #是否以master/worker模型運行nginx;默認(rèn)為on蹄胰;off為單進(jìn)程
                    
3岳遥、error_log file [level];     #日志文件存放位子和事件等級
事件驅(qū)動相關(guān)的配置:
events {
            ...
    }
    
1、worker_connections number;      #每個worker進(jìn)程所能夠打開的最大并發(fā)連接數(shù)數(shù)量裕寨;
#服務(wù)器最大并發(fā)數(shù)= worker_processes * worker_connections 

2浩蓉、use method;                     #指明并發(fā)連接請求的處理方法;可選項:select宾袜、poll捻艳、epoll,默認(rèn)epoll
            use epoll;

3庆猫、accept_mutex on | off;            #處理新的連接請求的方法认轨;on意味著由各worker輪流處理新請求,Off意味著每個新請求的到達(dá)都會通知所有的worker進(jìn)程月培,worker去搶這個請求嘁字;
http協(xié)議的相關(guān)配置:下面的一些可以定義在HTTP中也可以定義在server中
http {
        ...
        ...:各server的公共配置
                server {
                    ...
                }:每個server用于定義一個虛擬主機(jī);
                server {
                        listen 
                        server_name
                        root
                        alias
                        location [OPERATOR] URL {
                            ...
                            if CONDITION {
                                ...
                            }
                        }
                    }
}
配置虛擬主機(jī)

每個nginx主機(jī)都是虛擬主機(jī)节视。

server {                  #配置一個虛擬主機(jī)拳锚;
            listen address[:PORT]|PORT;
            server_name SERVER_NAME;
            root /PATH/TO/DOCUMENT_ROOT;                            
        }

     listen address[:port] [default_server] [ssl] [http2 | spdy]  [backlog=number] [rcvbuf=size] [sndbuf=size] 
            #指定監(jiān)聽端口

            default_server      :設(shè)定為默認(rèn)虛擬主機(jī);
            ssl                 :限制僅能夠通過ssl連接提供服務(wù)寻行;
            backlog=number      :后援隊列長度;
            rcvbuf=size         :接收緩沖區(qū)大胸揖!拌蜘;
            sndbuf=size         :發(fā)送緩沖區(qū)大小牙丽;
            http2               :使用http2協(xié)議

    server_name name ...;            #指明虛擬主機(jī)的主機(jī)名稱简卧;后可跟多個由空白字符分隔的字符串;
                                     #支持*通配任意長度的任意字符烤芦;server_name *.magedu.com  www.magedu.*
                                     #支持~起始的字符做正則表達(dá)式模式匹配举娩;server_name ~^www\d+\.magedu\.com$

            匹配機(jī)制:
                    (1) 首先是字符串精確匹配;
                    (2) 左側(cè)*通配符;
                    (3) 右側(cè)*通配符;
                    (4) 正則表達(dá)式铜涉;

    tcp_nodelay on | off;            #在keepalived模式下的連接是否啟用TCP_NODELAY選項智玻;
    tcp_nopush on|off;               #在sendfile模式下,是否啟用TCP_CORK選項芙代;

    sendfile on | off;               #是否啟用sendfile功能吊奢;文件高效傳輸功能。
    #定義路徑相關(guān)的配置:
    root path;                       #設(shè)置web資源路徑映射纹烹;用于指明用戶請求的url所對應(yīng)的本地文件系統(tǒng)上的文檔所在目錄路徑页滚;可以放在這些字段中:http, server, location, if in location;
                    
    location [ = | ~ | ~* | ^~ ] uri { ... }          Sets configuration depending on a request URI.
      location /bbs {
                root "/app/bbs";
                } 這個字段表示url根下的web它的路徑是放在/app/web下的bbs
      #在一個server中l(wèi)ocation配置段可存在多個铺呵,用于實現(xiàn)從uri到文件系統(tǒng)的路徑映射裹驰;ngnix會根據(jù)用戶請求的URI來檢查定義的所有l(wèi)ocation,并找出一個最佳匹配片挂,而后應(yīng)用其配置幻林;

            =:對URI做精確匹配;例如, http://www.magedu.com/宴卖,http://www.magedu.con/index.html.只能匹配第一個滋将,因為第二個多了一個index.html,多一個字符就無法匹配症昏。
            ~ :對URI做正則表達(dá)式模式匹配随闽,區(qū)分字符大小寫;
            ~*:對URI做正則表達(dá)式模式匹配肝谭,不區(qū)分字符大小寫掘宪;
            ^~:對URI的左半部分做匹配檢查,不區(qū)分字符大小寫攘烛;
            不帶符號:以URI為前綴的所有uri魏滚; 
                    
    #匹配優(yōu)先級:=, ^~, ~/~*,不帶符號坟漱;

    alias path;              #定義路徑別名鼠次,文檔映射的另一種機(jī)制;僅能用于location上下文芋齿;
                    
    #注意:location中使用root指令和alias指令的意義不同腥寇;
        (a) root,給定的路徑對應(yīng)于location中的/uri/左側(cè)的/觅捆;
        (b) alias赦役,給定的路徑對應(yīng)于location中的/uri/右側(cè)的/;
    
    index file ...; 
    
    error_page code ... [=[response]] uri;          #定義針對指定的錯誤信息顯示的指定的錯誤頁栅炒。

        error_page 404 /404.html;   #這個還可把一個響應(yīng)嗎修改為其他的響應(yīng)碼掂摔。
        location = /404.html {
            root "/www/error_pages";
        }
          error_page 404 =200 /404.html 這個客戶端觸發(fā)404錯誤出但是服務(wù)器端反饋的是200的響應(yīng)碼

    try_files file ... uri;
定義客戶端請求的相關(guān)配置
keepalive_timeout timeout [header_timeout];        #設(shè)定保持連接的超時時長术羔,0表示禁止長連接;默認(rèn)為75s乙漓;

keepalive_requests number;                         #在一次長連接上所允許請求的資源的最大數(shù)量,默認(rèn)為100; 

keepalive_disable none | browser ...;              #對哪種瀏覽器禁用長連接鱼喉;

send_timeout time;                                 #向客戶端發(fā)送響應(yīng)報文的超時時長趋观,此處扛禽,是指兩次寫操作之間的間隔時長;

client_body_buffer_size size;                      #用于接收客戶端請求報文的body部分的緩沖區(qū)大斜嗦剩辟;默認(rèn)為16k掐场;超出此大小時,其將被暫存到磁盤上的由client_body_temp_path指令所定義的位置熊户;

client_body_temp_path path [level1 [level2 [level3]]];  #設(shè)定用于存儲客戶端請求報文的body部分的臨時存儲路徑及子目錄結(jié)構(gòu)和數(shù)量嚷堡;按照16進(jìn)制的數(shù)字艇棕;

        client_body_temp_path   /var/tmp/client_body  1 2 2
                1:表示用一位16進(jìn)制數(shù)字表示一級子目錄沼琉;0-f
                2:表示用2位16進(jìn)程數(shù)字表示二級子目錄:00-ff
                2:表示用2位16進(jìn)程數(shù)字表示三級子目錄:00-ff
對客戶端進(jìn)行限制的相關(guān)配置:
limit_rate rate;                                   #限制響應(yīng)給客戶端的傳輸速率打瘪,單位是bytes/秒,0表示無限制桃移;
limit_except method ... { ... }                    #限制對指定的請求方法之外的其它方法的使用客戶端;

        limit_except GET {      
            allow 192.168.1.0/24;
            deny  all;
                    }   #表示除了GET之外的方法进泼,只允許1.0網(wǎng)段使用乳绕。
文件操作優(yōu)化的配置
aio on | off | threads[=pool];                    #是否啟用aio功能绞惦;異步I/O,建議開啟济蝉;

directio size | off;                              #在Linux主機(jī)啟用O_DIRECT標(biāo)記菠发,此處意味文件大于等于給定的大小時不在內(nèi)核中不緩存滓鸠,使用直接I/O例如directio 4m;

open_file_cache on|off;                           #是否開啟緩存
open_file_cache max=N [inactive=time];
                        nginx可以緩存以下三種信息:
                            (1) 文件的描述符糜俗、文件大小和最近一次的修改時間悠抹;
                            (2) 打開的目錄結(jié)構(gòu)楔敌;
                            (3) 沒有找到的或者沒有權(quán)限訪問的文件的相關(guān)信息梁丘;

                        max=N:可緩存的緩存項上限氛谜;達(dá)到上限后會使用LRU(最少最近)算法實現(xiàn)緩存管理;
                        inactive=time:緩存項的非活動時長澳腹,在此處指定的時長內(nèi)未被命中的或命中的次數(shù)少于open_file_cache_min_uses指令所指定的次數(shù)的緩存項即為非活動項酱塔;

open_file_cache_valid time;                       #緩存項有效性的檢查頻率羊娃;默認(rèn)為60s; 

open_file_cache_min_uses number;                  #在open_file_cache指令的inactive參數(shù)指定的時長內(nèi)蕊玷,至少應(yīng)該被命中多少次方可被歸類為活動項垃帅;
open_file_cache_errors on | off;                  #是否緩存查找時發(fā)生錯誤的文件一類的信息贸诚;

常用模塊的配置

ngx_http_access_module模塊:實現(xiàn)基于ip的訪問控制功能
allow address | CIDR | unix: | all;
deny address  | CIDR | unix: | all;               #設(shè)置訪問控制要在后面定義一個默認(rèn)策略酱固。
                可以放在:http媒怯、server扇苞、location、limit_except  字段中脖苏。
ngx_http_auth_basic_module模塊棍潘,實現(xiàn)基于用戶的訪問控制亦歉,使用basic機(jī)制進(jìn)行用戶認(rèn)證肴楷;
auth_basic string | off;                          #提示信息
auth_basic_user_file file;                        #用戶文件路徑

    location /admin/ {
                    alias /webapps/app1/data/;
                    auth_basic "Admin Area";    
                    auth_basic_user_file /etc/nginx/.ngxpasswd;
                }

注意:使用htpasswd創(chuàng)建授權(quán)用戶文件赛蔫,這個命令由httpd-tools所提供呵恢;
ngx_http_stub_status_module模塊渗钉,用于輸出nginx的基本狀態(tài)信息晌姚;
stub_status;
    配置示例:
        location  /basic_status {
            stub_status;
            }
查看到的信息  
        Active connections: 291 
        server accepts handled requests
        16630948 16630948 31070465 
        Reading: 6 Writing: 179 Waiting: 106    

        Active connections        :活動狀態(tài)的連接數(shù);
        accepts                   :已經(jīng)接受的客戶端請求的總數(shù);
        handled                   :已經(jīng)處理完成的客戶端請求的總數(shù)宝磨;
        requests                  :客戶端發(fā)來的總的請求數(shù)盅安;
        Reading                   :處于讀取客戶端請求報文首部的連接的連接數(shù)别瞭;
        Writing                   :處于向客戶端發(fā)送響應(yīng)報文過程中的連接數(shù)蝙寨;
        Waiting                   :處于等待客戶端發(fā)出請求的空閑連接數(shù)墙歪;
ngx_http_log_module模塊 定義http的訪問格式
log_format name string ...;
    string可以使用nginx核心模塊及其它模塊內(nèi)嵌的變量虹菲;
            "$http_x_forwarded_for 這個模塊是用于后端服務(wù)器通過數(shù)據(jù)包的首部信息獲取真正客戶端的地址

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
                access_log off;
                訪問日志文件路徑毕源,格式及相關(guān)的緩沖的配置霎褐;
                    buffer=size
                    flush=time 
                access_log /app/test.log   mian瘩欺;

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
                open_log_file_cache off;
                    緩存各日志文件相關(guān)的元數(shù)據(jù)信息俱饿;
                    
                    max:緩存的最大文件描述符數(shù)量拍埠;
                    min_uses:在inactive指定的時長內(nèi)訪問大于等于此值方可被當(dāng)作活動項枣购;
                    inactive:非活動時長;
                    valid:驗正緩存中各緩存項是否為活動項的時間間隔眷蜓;
ngx_http_gzip_module:壓縮模塊
    gzip on | off;   是否啟用壓縮
        
    gzip_comp_level level;              #壓縮等級吁系,可選等級1-9默認(rèn)是1汽纤。

    gzip_disable regex ...;              #不壓縮的正則表達(dá)式匹配到的瀏覽器

    gzip_min_length length;              #啟用壓縮功能的響應(yīng)報文大小閾值蕴坪; 
                        
    gzip_buffers number size;            #支持實現(xiàn)壓縮功能時為其配置的緩沖區(qū)數(shù)量及每個緩存區(qū)的大斜炒续室;默認(rèn)值為:gzip_buffers 32 4K或16 8K

    gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;nginx
             #作為代理服務(wù)器接收到從被代理服務(wù)器發(fā)送的響應(yīng)報文后挺狰,在何種條件下啟用壓縮功能的off:對代理的請求不啟用丰泊,
          默認(rèn)值設(shè)置no-cache, no-store瞳购,private:表示從被代理服務(wù)器收到的響應(yīng)報文首部的Cache-Control的值為此三者中任何
          一個学赛,則啟用壓縮功能盏浇;
                            
    gzip_types mime-type ... ;            #壓縮過濾器绢掰,僅對此處設(shè)定的MIME類型的內(nèi)容啟用壓縮功能滴劲,默認(rèn)為text/html

        示例:
            gzip  on;
            gzip_comp_level 6;
            gzip_min_length 64;
            gzip_proxied any;
            gzip_types text/xml text/css  application/javascript;                       
ngx_http_ssl_module模塊:
ssl on | off;                        #是否啟用ssl功能

ssl_certificate file;                #當(dāng)前虛擬主機(jī)使用PEM格式的證書文件班挖;
                        
ssl_certificate_key file;            #當(dāng)前虛擬主機(jī)上與其證書匹配的私鑰文件聪姿;
                        
ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];      #支持ssl協(xié)議版本末购,默認(rèn)為后三個盟榴;

ssl_session_cache off | none | [builtin[:size]] [shared:name:size];    # off關(guān)閉擎场、none不啟用
                    builtin[:size]:使用OpenSSL內(nèi)建的緩存迅办,此緩存為每worker進(jìn)程私有站欺;
                    [shared:name:size]:在各worker之間使用一個共享的緩存矾策;
                        
ssl_session_timeout time;            #客戶端一側(cè)的連接可以復(fù)用ssl session ca che中緩存的ssl參數(shù)的有效時長贾虽;
    
    配置示例:
            server {
                        listen 443 ssl;
                        server_name www.magedu.com;
                        root /vhosts/ssl/htdocs;
                        ssl on;
                        ssl_certificate /etc/nginx/ssl/nginx.crt;
                        ssl_certificate_key /etc/nginx/ssl/nginx.key;
                        ssl_session_cache shared:sslcache:20m;
                        }                           

ngx_http_rewrite_module模塊:將用戶請求的URI基于regex所描述的模式進(jìn)行檢查,而后完成替換地粪;
rewrite regex replacement [flag]             #將用戶請求的URI基于regex所描述的模式進(jìn)行檢查驶忌,匹配到時將其替換為replacement指定的新的URI付魔;

    #注意:如果在同一級配置塊中存在多個rewrite規(guī)則几苍,那么會自下而下逐個檢查妻坝;被某條件規(guī)則替換完成后刽宪,會重新一輪的替換檢查圣拄,
因此庇谆,隱含有循環(huán)機(jī)制饭耳;[flag]所表示的標(biāo)志位用于控制此循環(huán)機(jī)制寞肖;

     #如果replacement是以http://或https://開頭逝淹,則替換結(jié)果會直接以重向返回給客戶端栅葡;

    [flag]:
        last:重寫完成后停止對當(dāng)前URI在當(dāng)前l(fā)ocation中后續(xù)的其它重寫操作欣簇,而后對新的URI啟動新一輪重寫檢查熊咽;提前重啟新一輪循環(huán)被因; 
        break:重寫完成后停止對當(dāng)前URI在當(dāng)前l(fā)ocation中后續(xù)的其它重寫操作梨与,而后直接跳轉(zhuǎn)至重寫規(guī)則配置塊之后的其它配置粥鞋;結(jié)束循環(huán)呻粹;
        redirect:重寫完成后以臨時重定向方式直接返回重寫后生成的新URI給客戶端等浊,由客戶端重新發(fā)起請求筹燕;不能以http://或https://開頭庄萎;
        permanent:重寫完成后以永久重定向方式直接返回重寫后生成的新URI給客戶端糠涛,由客戶端重新發(fā)起請求;
                    
return  提前返回
                return code [text];
                return code URL;
                return URL;
                
                Stops processing and returns the specified code to a client. 
                
rewrite_log on | off;            #是否開啟重寫日志砸脊;
                
if (condition) { ... }              #引入一個新的配置上下文 凌埂;條件滿足時瞳抓,執(zhí)行配置塊中的配置指令孩哑;可以放在,server, location丛晌;

condition:
    比較操作符:
                        ==
                        !=
                        ~:模式匹配茵乱,區(qū)分字符大小寫瓶竭;
                        ~*:模式匹配斤贰,不區(qū)分字符大小寫瓷叫;
                        !~:模式不匹配摹菠,區(qū)分字符大小寫次氨;
                        !~*:模式不匹配煮寡,不區(qū)分字符大小寫幸撕;
    文件及目錄存在性判斷:
                        -e, !-e
                        -f, !-f
                        -d, !-d
                        -x, !-x
ngx_http_referer_module模塊:限制引用鏈接。
valid_referers none | block | server_names | string ...;
            定義referer首部的合法可用值挑童;
            referer首部顯示用戶從哪個頁面跳轉(zhuǎn)到這個頁面的站叼。
            none:請求報文首部沒有referer首部尽楔;
            block:請求報文的referer首部沒有值玛荞;
            server_names:參數(shù)勋眯,其可以有值作為主機(jī)名或主機(jī)名模式客蹋;
                arbitrary_string:直接字符串,但可使用*作通配符辆琅;
                regular expression:被指定的正則表達(dá)式模式匹配到的字符串;要使用~打頭这刷,例如 ~.*\.magedu\.com婉烟;

referer_hash_bucker_szie  szie ; 保存的定義模式的hash值空間的初始大小

referer_hash_max_size szie     ;保存hash值最大內(nèi)存空間暇屋。

配置示例:
        valid_referers none block server_names *.magedu.com *.mageedu.com magedu.* mageedu.* ~\.magedu\.;

            if($invalid_referer) {
                return http://www.magedu.com/invalid.jpg;
                }

注:如果定義了合法引用隅很,那么未定義的全為非法引用。
ngx_http_proxy_module模塊:http代理模塊率碾。
proxy_pass URL;    #后端服務(wù)器的地址

#注意:proxy_pass后面的路徑不帶uri時屋彪,其會將location的uri傳遞給后端主機(jī)所宰;
                    
    server {
            ...
            server_name HOSTNAME;
            location /uri/ {
            proxy http://hos[:port];
                    }
            ...
            }

http://HOSTNAME/uri --> http://host/uri 

    #proxy_pass后面的路徑是一個uri時,其會將location的uri替換為proxy_pass的uri畜挥;location和proxy_pass是映射關(guān)系仔粥,
如果location定義了/bbs,proxy_pass只寫了http://192.168.166.1蟹但,沒有寫/bbs或根躯泰,那訪問代理服務(wù)器的/bbs就會被代理到后端
的服務(wù)器的/bbs,也就是說訪問代理服務(wù)器的路徑就代理到后端服務(wù)器的同樣的路徑华糖。

    server {
            ...
        server_name HOSTNAME;
        location /uri/ {
        proxy http://host/new_uri/;
                }
        ...
        }

http://HOSTNAME/uri/ --> http://host/new_uri/

    #注:如果location定義uri時使用了正則表達(dá)式的模式麦向,或在if語句或limt_execept中使用proxy_pass指令,則proxy_pass之后
必須不能使用uri; 用戶請求時傳遞的uri將直接附加代理到的服務(wù)的之后客叉;

        server {
            ...
            server_name HOSTNAME;
            location ~|~* /uri/ {
            proxy http://host;
            }
            ...
        }

http://HOSTNAME/uri/ --> http://host/uri/诵竭;

proxy_set_header field value;            #設(shè)定發(fā)往后端主機(jī)的請求報文的請求首部的值话告;Context:http、server卵慰、location

      proxy_set_header X-Real-IP  $remote_addr;   #定義一個請求首部沙郭,值為客戶機(jī)的IP地址

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    #$proxy_add_x_forwarded_for變量包含客戶端請求頭中的"X-Forwarded-For",與$remote_addr用逗號分開裳朋,如果沒有"X-Fo
rwarded-For" 請求頭病线,則$proxy_add_x_forwarded_for等于$remote_addr。$remote_addr變量的值是客戶端的IP鲤嫡。當(dāng)Nginx設(shè)置
X-Forwarded-For于$proxy_add_x_forwarded_for后會有兩種情況發(fā)生:

      1送挑、如果從CDN過來的請求沒有設(shè)置X-Forwarded-For頭(通常這種事情不會發(fā)生),而到了我們這里Nginx設(shè)置將其設(shè)置為$proxy_
add_x_forwarded_for的話泛范,X-Forwarded-For的信息應(yīng)該為CDN的IP让虐,因為相對于Nginx負(fù)載均衡來說客戶端即為CDN,這樣的話罢荡,后端的
web程序時死活也獲得不了真實用戶的IP的赡突。

      2、CDN設(shè)置了X-Forwarded-For区赵,我們這里又設(shè)置了一次惭缰,且值為$proxy_add_x_forwarded_for的話,那么X-Forwarded-For的
內(nèi)容變成 ”客戶端IP,Nginx負(fù)載均衡服務(wù)器IP“如果是這種情況的話笼才,那后端的程序通過X-Forwarded-For獲得客戶端IP漱受,則取逗號分隔的
第一項即可。

      如上兩點所說骡送,如果我們知道了CDN設(shè)置了X-Forwarded-For信息昂羡,且只有客戶端真實的IP的話,那么我們的Nginx負(fù)載均衡服務(wù)器可以不必理會該頭摔踱,讓它默認(rèn)即可虐先。

proxy_cache_path          #定義可用于proxy功能的緩存;Context:http         

proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time][max_size=size][manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time]
[loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];

    格式:proxy_cache_path /app/cache keys_zone=aa:10m levels=1:2 max_size=2g;
            keys_zone=aa:10m     #定義一個緩存派敷,名字為aa蛹批,大小為10m   
            levels=1:2           #定義緩存目錄結(jié)構(gòu),1:2表示一級子目錄是1個16進(jìn)制數(shù)篮愉,二級子目錄2個16進(jìn)制數(shù)腐芍。
            max_size=2g          #緩存空間的最大空間

proxy_cache zone | off;          #指明要調(diào)用的緩存,或關(guān)閉緩存機(jī)制试躏;Context:http猪勇、server、location

proxy_cache_key string;        #緩存中用于“鍵”的內(nèi)容颠蕴;可以是url埠对,也可以是url后面的內(nèi)容络断。
                
                默認(rèn)值:proxy_cache_key $scheme$proxy_host$request_uri;協(xié)議、主機(jī)项玛、url

proxy_cache_valid [code ...] time;        #定義對特定響應(yīng)碼的響應(yīng)內(nèi)容的緩存時長貌笨;
                proxy_cache_valid 200 302  6m;

                定義在http{...}中;
                proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g;
                
            定義在需要調(diào)用緩存功能的配置段襟沮,例如server锥惋、location{...};
                proxy_cache pxycache;
                proxy_cache_key $request_uri;
                proxy_cache_valid 200 302 301 1h;
                proxy_cache_valid any 1m;
                
proxy_cache_use_stale             #后端主機(jī)無法訪問時开伏,是否可以使用緩存響應(yīng)客戶端請求膀跌。error
                
                proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off ...;
                error                #后端服務(wù)器發(fā)送了錯誤
                timeout              #后端服務(wù)器超時
                invalid_header       #后端服務(wù)器有一個非法的首部
                updating             #后端服務(wù)器正在更新
                http_500             #后端服務(wù)器響應(yīng)了502 
                http_50 ...
                off 關(guān)閉

proxy_cache_methods GET | HEAD | POST ...;    #允許哪些操作可以緩存。默認(rèn)值為get固灵、head


proxy_hide_header field;            #隱藏緩存數(shù)據(jù)中響應(yīng)給客戶端的首部捅伤。默認(rèn):Date、Server巫玻、X-Pad丛忆、and X-Accel-By defult。

          X-Powerer-by 隱藏php版本信息

proxy_connect_timeout time;         #定義創(chuàng)建代理服務(wù)和后端服務(wù)器連接的超時時長仍秤。默認(rèn)為60s熄诡;最長為75s;下面的默認(rèn)值一樣

proxy_read_timeout time;            #后端服務(wù)器發(fā)給代理服務(wù)器響應(yīng)報文的超時時長

proxy_send_timeout time;            #發(fā)送給后端服務(wù)器請求報文的超時時長
ngx_http_headers_module模塊,向由代理服務(wù)器響應(yīng)給客戶端的響應(yīng)報文添加自定義首部诗力,或修改指定首部的值凰浮;
add_header name value [always];               #添加自定義首部;

示例:
    add_header X-Via  $server_addr;           #在發(fā)送給客戶端的響應(yīng)報文中添加代理服務(wù)器的IP
    
     add_header X-Accel $server_name;         #在發(fā)給客戶端的響應(yīng)報文中添加代理服務(wù)器的主機(jī)名

expires [modified] time;

expires epoch | max | off;          #用于定義Expire或Cache-Control首部的值苇本;
ngx_http_fastcgi_module模塊:代理支持fastcgi服務(wù)袜茧,如PHP。
fastcgi_pass address;       #定義后端動態(tài)頁面服務(wù)器的地址
                address為fastcgi server的地址瓣窄;  location, if in location惫周;

            http://www.ilinux.io/admin/index.php --> /admin/index.php (uri)/data/application/admin/index.php

fastcgi_index name;      #fastcgi默認(rèn)的主頁資源; 

fastcgi_param parameter value [if_not_empty];        #向后端的php服務(wù)器傳遞參數(shù)。比如請求資源的路徑康栈、這里用于向后端php服務(wù)器的資源路徑   
                    參數(shù):要傳遞的參數(shù)列表在/etc/nginx/fastcgi_params文件中。

配置示例1:
        前提:配置好fpm server和mariadb-server服務(wù)喷橙;

 location ~* \.php$ {               #這里匹配到的資源名成被定義成變量$fastcgi_script_name;傳遞給后端服務(wù)需要填寫
                    root           /usr/share/nginx/html;
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name; 
                    include        fastcgi_params;   #定義這個配置包含要傳遞的參數(shù)定義文件
}
    SCRIPT_FILENAME 表示傳遞給后端服務(wù)器的資源名和路徑


配置示例2:通過/pm_status和/ping來獲取fpm server狀態(tài)信息啥么;

location ~* ^/(pm_status|ping)$ {
                    include        fastcgi_params;
                    fastcgi_pass 127.0.0.1:9000;
                    fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
}           

    #注:訪問代理服務(wù)器的pm_status路徑時》∮猓可以看到php-fpm的連接池的狀態(tài)悬荣。輸入pm_status?full可以看到全部的狀態(tài)
                
fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] 
[max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number]
[loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time]
[purger_threshold=time];

    #定義fastcgi的緩存;緩存位置為磁盤上的文件系統(tǒng)疙剑,由path所指定路徑來定義氯迂;不帶中括號的為必選践叠。
        
            levels=levels:          #緩存目錄的層級數(shù)量,以及每一級的目錄數(shù)量嚼蚀;levels=ONE:TWO:THREE
                        leves=1:2:2
            keys_zone=name:size      #k/v映射的內(nèi)存空間的名稱及大小
            inactive=time            #非活動時長
            max_size=size            #磁盤上用于緩存數(shù)據(jù)的緩存空間上限

fastcgi_cache zone | off;            #調(diào)用指定的緩存空間來緩存數(shù)據(jù)禁灼;http, server, location

fastcgi_cache_key string;            #定義用作緩存項的key的字符串;

fastcgi_cache_methods GET | HEAD | POST ...;      #為哪些請求方法使用緩存轿曙;

fastcgi_cache_min_uses number;       #緩存空間中的緩存項在inactive定義的非活動時間內(nèi)至少要被訪問到此處所指定的次數(shù)方可被認(rèn)作活動項弄捕;

fastcgi_cache_valid [code ...] time; #不同的響應(yīng)碼各自的緩存時長;

示例:
    http {
        ...
        fastcgi_cache_path /var/cache/nginx/fastcgi_cache levels=1:2:1 keys_zone=fcgi:20m inactive=120s;
        ...
        server {
                ...
        location ~* \.php$ {
                        ...
                    fastcgi_cache fcgi;
                    fastcgi_cache_key $request_uri;
                    fastcgi_cache_valid 200 302 10m;
                    fastcgi_cache_valid 301 1h;
                    fastcgi_cache_valid any 1m; 
                    ...
                    }
                ...
            }
            ...
}
                
fastcgi_keep_conn on | off;            #默認(rèn)情況下导帝,fastcgi會關(guān)閉連接守谓,但是我們可以設(shè)置長連接。這個選項提示是否開啟長連接您单,on啟動斋荞、off關(guān)閉 

ngx_http_upstream_module :七層調(diào)度
upstream name { ... }          #定義后端服務(wù)器組;引入一個新的上下文虐秦;只能用于http{}上下文中平酿;

    #注: 默認(rèn)的調(diào)度方法是wrr;權(quán)重的調(diào)度方法是真實服務(wù)器的權(quán)重是幾那就認(rèn)為它有幾虛擬服務(wù)器羡疗,然后按照虛擬服務(wù)器的總數(shù)進(jìn)行輪詢調(diào)度染服。  如果不設(shè)置默認(rèn)每個服務(wù)器的權(quán)重都是1,等同與rr(輪詢)叨恨。


server address [parameters]       #定義服務(wù)器地址和相關(guān)的參數(shù)柳刮;
        地址格式:
                IP[:PORT]
                HOSTNAME[:PORT]
                unix:/PATH/TO/SOME_SOCK_FILE

        參數(shù):
            weight=number#            #權(quán)重,默認(rèn)為1痒钝;
            max_fails=number          #探測服務(wù)器失敗嘗試的最大次數(shù)秉颗;
            max_conns=number          #最大連接數(shù),新版本只有企業(yè)版支持
            fail_timeout=time         #設(shè)置服務(wù)器為不可用狀態(tài)的超時時長送矩;默認(rèn)為10s蚕甥,和max_fails對應(yīng)
            backup                    #把服務(wù)器標(biāo)記為“備用”狀態(tài); 
            down                      #手動標(biāo)記其為不可用栋荸;

算法
least_conn;                   #最少連接調(diào)度算法菇怀;當(dāng)服務(wù)器的權(quán)重相同時為lc最小連接調(diào)度。當(dāng)server擁有不同的權(quán)重時為wlc晌块;當(dāng)所有后端主機(jī)的連接數(shù)相同時爱沟,則使用wrr進(jìn)行調(diào)度;
            
ip_hash;                      #源地址hash算法匆背;能夠?qū)碜酝粋€源IP地址的請求始終發(fā)往同一個upstream server呼伸;

hash key [consistent];        #基于指定的key的hash表實現(xiàn)請求調(diào)度,此處的key可以文本钝尸、變量或二者的組合括享; 
        #注:consistent:參數(shù)搂根,指定使用一致性hash算法;建議添加铃辖,不添加對應(yīng)下面的第一個算法剩愧,添加對應(yīng)第二個。

使客戶端盡量調(diào)用到一臺后端服務(wù)器的澳叉,而調(diào)度器又不需要記錄對應(yīng)表的算法有兩種

  1. 余數(shù)hash:每一臺服務(wù)器對應(yīng)一個編號隙咸,客戶端進(jìn)行hash運算,運算出的值和編號總數(shù)進(jìn)行取模運算成洗,得出一臺后端服務(wù)器五督,每次客戶端訪問時都會的到同一個結(jié)果。但是這個算法有些缺陷瓶殃,當(dāng)后端服務(wù)器的數(shù)量發(fā)生變化時會導(dǎo)致前面的取模結(jié)果失效充包。

2.一致性hash:先構(gòu)造一個長度為232的整數(shù)環(huán),根據(jù)節(jié)點名稱的Hash值(其分布為0至232-1)將緩存服務(wù)器節(jié)點放置在這個Hash環(huán)上遥椿,然后根據(jù)需要緩存的數(shù)據(jù)的Key值計算得到其Hash值(其分布也為0至232-1)基矮,然后在Hash環(huán)上順時針查找距離這個Key值的Hash值最近的服務(wù)器節(jié)點,完成Key到服務(wù)器的映射查找冠场。缺點家浇,hash環(huán)上的緩存服務(wù)器可能會出現(xiàn)偏斜,導(dǎo)致緩存服務(wù)器分布在非常臨近的節(jié)點上碴裙。解決辦法:調(diào)高緩存服務(wù)器的權(quán)重钢悲,從而可以生成較多的虛擬服務(wù)器,來分布在hash環(huán)上舔株。

示例:
    hash $request_uri consistent 莺琳。             #uri最為key可以提高緩存的命中率
    hash $remote_addr
    hash $cookie_name

keepalive connections;                          #可使用長連接的連接數(shù)量;每worker與后端服務(wù)保持的最大空閑長連接數(shù)量载慈;
```
###### ngx_stream_core_module:偽四層調(diào)度核心模塊
```
listen address:port [ssl] [udp] [backlog=number] [bind] [ipv6only=on|off] [reuseport] 
[so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

監(jiān)聽的端口惭等;
        默認(rèn)為tcp協(xié)議;
        udp: 監(jiān)聽udp協(xié)議的端口办铡;
```
###### ngx_stream_proxy_module:偽四層調(diào)度
```
proxy_pass address;                        #后端服務(wù)器地址

proxy_timeout timeout;                     #設(shè)置兩次讀寫操作之間的間隔辞做,就是一次讀寫不成功的再次重試時間拷肌。默認(rèn)為10m; 

proxy_connect_timeout time;                #設(shè)置nginx與被代理的服務(wù)器嘗試建立連接的超時時長古胆;默認(rèn)為60s界斜;

proxy_next_upstream  on|off  默認(rèn)on        #給客戶端調(diào)度了一臺服務(wù)器溉贿,如果這臺服務(wù)器無法訪問時是否允許由調(diào)度器自動幫客戶端調(diào)度到另一臺服務(wù)器。

proxy_next_upstream_timeout  time          #重新給客戶端調(diào)度的后端服務(wù)器的訪問超時時間获询。

proxy_next_upstream_tries  number          #超時次數(shù)。超過此設(shè)置的次數(shù)為超時聂抢,默認(rèn)為0拯钻,無限制帖努。

示例:
    stream {
        upstream s shsrvs {
        server 192.168.10.130:22;
        server 192.168.10.131:22;
        hash $remote_addr consistent;
        }
                
    server {
        listen 172.16.100.6:22202;
        proxy_pass sshsrvs; 
        proxy_timeout 60s;
        proxy_connect_timeout 10s;

        }
}       
```
###### ngx_stream_log_module  代理日志功能,默認(rèn)關(guān)閉,1.11.4支持

```
access_log   path format [buffer=size] [gzip[=level]][flush=time][if=condition] off 

示例:
stream {
   log_format basic '$remote_addr [$time_local]'
     '$protocol $status $bytes_sent $bytes_received'
    '$session_time';

   access_log /var/log/nginx/access.log basic;
}
```
###### ngx_stream_access_module   四層代理的訪問控制
```
allow address cidr|unix|all
server {
    deny 1.1.1.1粪般;
    allow 2.2.2.0/16拼余;
    deny all;
}
```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市亩歹,隨后出現(xiàn)的幾起案子匙监,更是在濱河造成了極大的恐慌,老刑警劉巖小作,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亭姥,死亡現(xiàn)場離奇詭異,居然都是意外死亡顾稀,警方通過查閱死者的電腦和手機(jī)达罗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來静秆,“玉大人粮揉,你說我怎么就攤上這事「П剩” “怎么了扶认?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長殊橙。 經(jīng)常有香客問我辐宾,道長,這世上最難降的妖魔是什么蛀柴? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任螃概,我火速辦了婚禮,結(jié)果婚禮上鸽疾,老公的妹妹穿的比我還像新娘吊洼。我一直安慰自己,他們只是感情好制肮,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布冒窍。 她就那樣靜靜地躺著,像睡著了一般豺鼻。 火紅的嫁衣襯著肌膚如雪综液。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天儒飒,我揣著相機(jī)與錄音谬莹,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛附帽,可吹牛的內(nèi)容都是我干的埠戳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蕉扮,長吁一口氣:“原來是場噩夢啊……” “哼整胃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起喳钟,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤屁使,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后奔则,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛮寂,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年应狱,在試婚紗的時候發(fā)現(xiàn)自己被綠了共郭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡疾呻,死狀恐怖除嘹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岸蜗,我是刑警寧澤尉咕,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站璃岳,受9級特大地震影響年缎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铃慷,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一单芜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧犁柜,春花似錦洲鸠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至萤悴,卻和暖如春瘾腰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背覆履。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工蹋盆, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留费薄,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓栖雾,卻偏偏與公主長得像义锥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子岩灭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容