了解Nginx

Nginx

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。

Nginx的程序架構;master/worker

master/worker模型:一個master進程可生成一個或多個worker進程;每個worker基于時間驅動機制可以并行響應多個請求
master:負責啟動服務,分析配置文件,父進程啟動子進程和worker進程,平滑升級
worker:真正響應用戶請求進程;http服務,http代理,fastcgi代理,...
    緩存相關的進程
        cache loader:緩存加載器,載入緩存對象
        cache manger:緩存管理器,管理緩存對象
事件驅動:epoll(Linux),kqueue(FreeBSD), /dev/poll(Solaris)
消息通知:select,poll, rt signals
支持sendfile,  sendfile64:
支持AIO,mmap

Nginx的特性

1) 模塊化設計、較好擴展性;早期不支持模塊的動態裝卸載
2) 高可靠性:基于master/worker模式

3) 支持熱部署(平滑遷移):不停機更新配置文件、更換日志、更新服務器程序版本;
4) 內存消耗低:10000個keep-alive連接模式下的非活動連接僅消耗2.5M內存;
5) 支持event-driven事件驅動模型, aio異步驅動機制, mmap內存映射
6) 異步,事件驅動,非阻塞
    并發請求處理:通過kevent/epoll/select
    文件IO:高級 IO sendfile:支持數據加載完以后,直接在內核級封裝響應報文,響應給客戶端。
            異步
            mmap:內存映射:數據從磁盤空間映射進內存空間來,并把內存直接對應的拿給進程來訪問。

Nginx的基本功用

1) 靜態的web資源服務器;
2) http/https協議的反向代理;tcp/udp協議的反代
3) pop3, smpt,imap4等郵件協議的反向代理;
4) 能緩存打開的文件(元數據:文件的描述符等等信息)
5) 結合FastCGI/uwSGI/SCGI等協議反代動態資源請求,既能反代,還能緩存
6) 高度模塊化(非DSO機制):高度模塊化,但其模塊早期不支持DSO機制;近期版本支持動態裝載和卸載;
    模塊分類:
        核心模塊:core module:核心公用模塊
        標準模塊:
            Standard HTTP modules:標準(核心)HTTP模塊;自動編譯進程序不止一個
            Optional HTTP modules:可選的http協議相關的模塊
            Mail modules:郵件模塊
            Stream modules:可以基于tcp協議負載用戶的各類請求
        3rd party modules:第三方模塊,Nginx沒有自帶,在編譯時需手動指明加載方式加載

nginx的安裝配置:

官方的預制包:
    http://nginx.org/packages/centos/7/x86_64/RPMS/
編譯安裝:
    ]# 下載源碼包
    ]# yum install -y make
    ]# yum install -y gcc
    ]# yum -y groupinstall "Development Tools" "Server Platfrom Development"
    ]# yum install pcre-devel openssl-devel zlib-devel -y  手動解決最重要的依賴關系包
    ]# useradd -r nginx 增加一個系統用戶
    ]# tar -xf nginx-1.10.0.tar.gz
    ]# cd nginx-1.10.0/
    nginx-1.10.0]# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/va/log/nginx.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
    ]# vim /etc/profile.d/nginx.sh
        export PATH=/usr/local/nginx/sbin:$PATH
    ]# . /etc/profile.d/nginx.sh
    ]# nginx -t 檢測錯誤
    ]# nginx -h 可查看命令使用幫助
啟動服務,檢測端口是否已經啟用
    ]# /usr/local/nginx/sbin/nginx 啟動服務
    ]# ss -tnlp 查看80端口是否已經啟用,注意,如果httpd服務已經啟用了話 這里會啟動失敗

Nginx配置文件

配置指令有類型
1) 全局指令:放置于mainblock中,即文檔根
    main配置段類別:正常運行必備的配置;優化性能相關的配置;用于調試、定位問題的配置;
2) 模塊指令:由模塊引入,其也必須放置于相應的Directive blocks中;block之間可能存在嵌套關系。用{}嵌套
    event 配置段:事件驅動模塊段,面向用戶并發連接請求響應組織配置機制
    http 配置段:web模塊相關配置
    mail 配置段:郵件模塊相關配置;編譯安裝時候默認無此模塊

nginx主配置文件的組成部分

主配置文件:nginx.conf
        在主配置文件中加入include語句,可以將主配置文件切割成段例如include conf.d/*.conf   ===>  /etc/nginx/conf.d/*.conf
fastcgi, uwsgi,scgi等協議相關的配置文件
mime.types:支持的mime類型
主配置文件的配置指令:
(1) 指令必須以分號結尾;directive value [value2 ...];
(2) 支持使用配置變量;
    內建變量:由Nginx模塊引入,可直接引用;
    自定義變量:由用戶使用set命令定義;set variable_name value;         
    引用變量:$variable_name
主配置文件結構:
main block:主配置段,也即全局配置段;有以下分類
    正常運行必備的配置
        1、USERNAME  [GROUPNAME];指定用于運行worker進程的用戶和組:例如user  nginx   nginx;
        2、pid /PATH/TO/PID_FILE;指定nginx進程的pid文件路徑;pid  /var/run/nginx.pid;  
        3、include file | mask;指明包含進來的其它配置文件片段;
        4、load_module file;指明要裝載的動態模塊;
    性能優化相關的配置:
        1、worker_processes number | auto;worker進程的數量;通常應該為當前主機的cpu的物理核心數減一,"auto"實現自動設定
        2、worker_cpu_affinity cpumask cpumask ...;CPU綁定;加上CPU掩碼,"auto"實現自動設定與物理核心cpu數相同
            實例:worker_cpu_affinity 00000001 00000010 00000100;worker_cpu_affinity auto
        3、worker_priority number;指定worker進程的nice值,設定worker進程優先級;[-20,20]
        4、worker_rlimit_nofile number;worker進程所能夠打開的文件數量上限;
        5、worker_rlimit_sigpending  number;指定每個用戶能夠發往worker進程的信號的數量;
    調試、定位問題的配置:
        1、daemon on|off;是否以守護進程方式運行nignx;
        2、master_process on|off;是否以master/worker模型運行nginx;默認為on;
        3、error_log  /PATH/TO/ERROR_LOG level;錯誤日志文件及其級別;調試需要可以設定為debug;但debug在編譯時使用了"--with-debug"選項
    事件驅動event相關的配置:
        1、worker_connections number;每個worker進程所能夠打開的最大并發連接數數量;默認為1024;上限是:worker_proceses * worker_connections
        2、use method;指明并發連接請求的處理方法;建議讓nginx自動選擇;默認為use epoll;
        3、accept_mutex on | off;各worker接收用戶的請求的負載均衡鎖(互斥鎖),處理新的連接請求的方法;
            on意味著由各worker輪流處理新請求,Off意味著每個新請求的到達都會通知所有的worker進程;建議設置為on

nginx:http協議相關的配置:http的所有配置需要在http{ } 配置段進行定義。大部分配置指令由ngx_http_core _ module模塊引入

主機或套接字相關指令
1、server {}:每一個server定義一個虛擬主機;server可以出現一次或多次
    server{
        listenPORT;
        server_name  NAME;
        root /PATH/TO/DOCUMENTROOT;
    }
    server{
        listenPORT;
        server_name  NAME;
        root /PATH/TO/DOCUMENTROOT;
        alias 
        location [OPERATOR] /url/{
            ...
        }

    }
    ...
    注意:
     1) 基于port:listen指令監聽在不同的端口;
     2) 基于hostname:server_name指令指向不同的主機名;
     3) 如果有多個server需要用到共同配置的話,要把配置放在server之外,http只能進行定義,即多個server的公共配置
2、listen 配置監聽端口
    使用格式:listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILE
            listen address[:port] [default_server] [ssl] [http2 | spdy]  [backlog=number] [rcvbuf=size] [sndbuf=size]
    注釋:
        default_server:設置默認虛擬主機;用于基于IP地址,或使用了任意不能對應于任何一個server的name時所返回站點;
        ssl:用于限制只能通過ssl連接提供服務;
        http2:支持httpversion 2第二版http協議;
        spdy:SPDYprotocol(speedy),在編譯了spdy模塊的情況下,用于支持SPDY協議;
        backlog=number:假如linten端口上的隊列已滿,指明排隊后的隊列長度
        rcvbuf=size:接收緩沖的大小
        sndbuf=size:發送緩沖的大小
3、 server_name NAME [...];:指明主機名稱
    指明虛擬主機的主機名稱;后可跟多個由空白字符分隔的字符串;名稱還可以使用通配符和正則表達式(~引導整個正則表達式);
        支持*通配任意長度的任意字符;server_name *.magedu.com
        支持~起始的字符做正則表達式模式匹配;server_name ~^www\d+\.magedu\.com$
    匹配機制:
        (1) 首先是字符串精確匹配;例如:www.xxx.com
        (2) 左側*通配符;例如:*.xxx.com
        (3) 右側*通配符;例如:www.xxx.*
        (4) 正則表達式;例如:~^.*\.xxx\.com$
        (5) default_server
4、tcp_nodelay on | off;在keepalived模式下的連接是否啟用TCP_NODELAY選項;一般為off
    提高帶寬利用率,將發往同一主機很小的TCP報文合并成一個;實際生產上對于用戶請求即使浪費帶寬也不能合并請求
5、sendfile on | off;是否啟用sendfile功能;
    靜態文件直接在內核中封裝響應,而不是從內核空間到用戶空間再發往內核空間
6、 tcp_nopush on|off;是否啟用TCP_NOPUSH(FREEBSE)或TCP_CORK(Linux)選項;僅在sendfile為on時有用;
    嘗試將多個報文首部壓縮成一個發送,默認off,不啟用該功能
定義路徑相關的配置:
1、root path;設置web資源路徑映射;用于指明用戶請求的url所對應的本地文件系統上的文檔所在目錄路徑;
    可用的配置段位置:http, server, location, if in location;

2、location;在一個server中location配置段可存在多個,用于實現從uri到文件系統的路徑映射;ngnix會根據用戶請求的URI來檢查定義的所有location,并找出一個最佳匹配,而后應用其配置;
    使用格式:
        1) location @name { ... }
        2) location[ = | ~ | ~* | ^~ ] uri { ... }  
    匹配優先級:=, ^~, ~/~*,不帶符號;
        =:對URI做精確匹配;例如, http://www.magedu.com/, http://www.magedu.com/index.html
            location = / {
                ...
            }
        ~:對URI做正則表達式模式匹配,區分字符大小寫;
        ~*:對URI做正則表達式模式匹配,不區分字符大小寫;
        ^~:對URI的左半部分做匹配檢查,不區分字符大小寫;
        不帶符號:匹配起始于此uri的所有的url;
    示例
        server {
            ...
            server_name www.xuding.com;
            root/data/www;
            location  /admin/ {
                ...
            }
        }

3、alias path;定義路徑別名,文檔映射的另一種機制;僅能用于location上下文;


    注意:location中使用root指令和alias指令的意義不同;
        (a) root,給定的路徑對應于location中的/uri/左側的/;
        (b) alias,給定的路徑對應于location中的/uri/右側的/;

4、index file ...;設置默認主頁(ngx_http_index_module模塊引入)
    默認資源;http, server, location;  可以帶上變量,如$geo更具不同IP地區來設置不同的語言主頁

5、error_page code ... [=[response]] uri;:自定義錯誤頁面,根據http的狀態碼重定向錯誤頁面;
    實例:
   1)指明錯誤頁面
        error_page  404 /404.html
        error_page 500 502 503 504 /50x.html
        location = /50x.html {
        root /html/;
        }
    2) 以指定的響應狀態碼進行響應
        error_page  404 =200  /404.html
6、try_files file ... uri;以指定的順序檢查文件的存在性響應
     try_files file ... =code;
    嘗試查找第1至第N-1個文件,第一個即為返回給請求者的資源;若1至N-1文件都不存在,則跳轉至最一個uri(必須不能匹配至當前location,而應該匹配至其它location,否則會導致死循環);
定義客戶端請求的相關配置
1、keepalive_timeout timeout [header_timeout];
    設定保持連接的超時時長,0表示禁止長連接;默認為75s;
2、keepalive_requests number;
    在一次長連接上所允許請求的資源的最大數量,默認為100;
3、keepalive_disable none | browser ...;
    對哪種瀏覽器禁用長連接;默認none,也可以指明具體瀏覽器名稱
4、send_timeout time;
    向客戶端發送響應報文的超時時長,此處,是指兩次寫操作之間的間隔時長;默認為60s;
5、client_body_buffer_size size;
    用于接收客戶端請求報文的body部分的緩沖區大??;默認為16k;超出此大小時,其將被暫存到磁盤上的由client_body_temp_path指令所定義的位置;
6、client_body_temp_path path [level1 [level2 [level3]]];
    設定用于存儲客戶端請求報文的body部分的臨時存儲路徑及子目錄結構和數量;
    格式為16進制的數字,如下;                          
        client_body_temp_path path  /var/tmp/client_body  1 2 2
對客戶端進行限制的相關配置:
1、limit_rate rate;
    限制響應給客戶端的傳輸速率,單位是bytes/second,0表示無限制;

2、limit_except method ... { ... }
    限制對指定的請求方法之外的其它方法的使用客戶端;                        
    limit_except GET {
        allow 192.168.1.0/32;
        deny  all;
    }
文件操作優化的配置
1、aio on | off | threads[=pool];
    是否啟用異步IO模式

2、directio size | off;
    直接IO;不在內存中緩沖,直接從硬盤加載使用(當大于指定size);在Linux主機啟用O_DIRECT標記,此處意味文件大于等于給定的大小時使用,例如directio 4m;    

3、 open_file_cache :打開文件緩存
    open_file_cache off;
    open_file_cache max=N [inactive=time];  
        nginx可以緩存以下三種信息:
            (1) 文件的描述符、文件大小和最近一次的修改時間;
            (2) 打開的目錄結構;
            (3) 沒有找到的或者沒有權限訪問的文件的相關信息;

        max=N表示可緩存的最大條目上限;一旦達到上限,則會使用LRU算法從緩存中刪除最近最少使用的緩存項;                         
        inactive=time:緩存項的非活動時長,在此處指定的時長內沒有被訪問過的或訪問次數少于open_file_cache_min_users指令所指定的緩存項是為非活動緩存項,因此直接刪除。

4、open_file_cache_valid time;
    每隔多久檢查一次緩存中緩存項的有效性;默認為60s;

5、open_file_cache_min_uses number;
    在open_file_cache指令的inactive參數指定的時長內,至少應該被命中多少次方可被歸類為活動項;

6、open_file_cache_errors on | off;
    是否緩存查找時發生錯誤的文件一類的信息;意為;是否緩存查找時找不到其路徑的文件,或沒有權限沒有權限訪問的文件相關信息;
ngx _ http _ access _ module模塊:實現基于ip的訪問控制功能
應用于http, server, location, limit_except配置段
1、allow address | CIDR | unix: | all;
    允許指定的ip訪問

2、deny address | CIDR | unix: | all;
    拒絕指定的ip訪問
ngx _ http _ auth _ basic _ module模塊調用配置(basic認證)
1、auth_basic string |off;:使用httpbasic認證協議對用戶進行認證;
    string為所給定字符,其作用在于認證時顯示的提示所信息

2、 auth_basic_user_file FILE ;:實現用戶認證的賬號文件;
    認證文件格式(需手動創建):
        name1:password1
        name2:password2:comment
    注意:密碼需要加密,加密方式可以為encryptedwith the crypt() function; md5加密;
    密碼可以用htpasswd創建:htpasswd-c -m  /etc/nginx/.ngxhtpasswd tom(創建第二個用戶時需要將-c去掉)
    示例:
        location /admin/ {
            alias /webapps/app1/data/;
            auth_basic "Admin Area";
            auth_basic_user_file /etc/nginx/.ngxpasswd;
        }
ngx _ http _ stub _ status _ module模塊調用配置:用于輸出nginx的基本狀態信息;
1、stub_status;調用查看nginx狀態指令
    配置示例:
        location  /basic_status {
            stub_status;
        }
    通過指定的uri輸出stub status;其具體輸出結果如下:
        Active connections: 291 
        server accepts handled requests
        16630948 16630948 31070465 
        Reading: 6 Writing: 179 Waiting: 106
    輸出結果注釋;
        Active connections: 活動狀態的連接數;
        accepts:已經接受的客戶端請求的總數;
        handled:已經處理完成的客戶端請求的總數;
        requests:客戶端發來的總的請求數;
        Reading:處于讀取客戶端請求報文首部的連接的連接數;
        Writing:處于向客戶端發送響應報文過程中的連接數;
        Waiting:處于等待客戶端發出請求的空閑連接數;
ngx _ http _ log _ module模塊調用配置(訪問日志)
1、 log_format  name string  ...;:定義日志格式及其名稱;
    日志格式一般通過調用內置變量來定義;
    string:通過nginx所支持的變量(每個模塊會引入自變量)來支持的;即可以使用nginx核心模塊及其它模塊內嵌的變量;
2、access_log:訪問日志       
    access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
    access_log off;
    訪問日志文件路徑,格式名稱以及緩存大小和刷寫時間間隔;建議定義緩沖以提升性能;
        buffer=size
        flush=time
3、open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
    open_log_file_cache off;緩存各日志文件相關的元數據信息;
    指令參數注釋;
        max:緩存的最大文件描述符數量;
        min_users:在inactive指定的時長內訪問大于等于此值方可被當作活動項;
        inactive:非活動時長;
        valid:驗正緩存中各緩存項是否為活動項的時間間隔;
ngx _ http _ referer _ module模塊調用配置(基于請求報文中的Referer首部的值做訪問控制)
1、valid_referers none | blocked | server_names | string ...;定義referer首部的合法可用值;
    指令參數注釋
        none:請求報文首部沒有referer首部;
        blocked:請求報文的referer首部沒有值;
        server_names:參數,其可以有值作為主機名或主機名模式;
        arbitrary_string:直接字符串,但可使用*作通配符;
        regular expression:被指定的正則表達式模式匹配到的字符串;要使用~打頭,例如 ~.*\.magedu\.com;
    配置示例:
        valid_referers none block server_names *.magedu.com *.mageedu.com magedu.* mageedu.* ~\.magedu\.;

        if($invalid_referer) {
            return 403;
        }
ngx _ http _ rewrite _ module模塊:http請求重寫,將用戶請求的URI基于regex所描述的模式進行檢查,而后完成替換;
1、rewrite regex replacement [flag]
    將用戶請求的URI基于regex所描述的模式進行檢查,匹配到時將其替換為replacement指定的新的URI;

    注意:如果在同一級配置塊中存在多個rewrite規則,那么會自下而下逐個檢查;被某條件規則替換完成后,會重新一輪的替換檢查,因此,隱含有循環機制;[flag]所表示的標志位用于控制此循環機制;

    如果replacement是以http://或https://開頭,則替換結果會直接以重向返回給客戶端;
        301:永久重定向;
    regex:正則表達式,用于匹配用戶請求的url;
    replacement:重寫(重定向、替換)成為的結果;
    [flag]:
        last:重寫完成后停止對當前URI在當前location中后續的其它重寫操作,而后對新的URI啟動新一輪重寫檢查;提前重啟新一輪循環; 
        break:重寫完成后停止對當前URI在當前location中后續的其它重寫操作,而后直接跳轉至重寫規則配置塊之后的其它配置;結束循環;
        redirect:重寫完成后以臨時重定向方式直接返回重寫后生成的新URI給客戶端,由客戶端重新發起請求;不能以http://或https://開頭;
        permanent:重寫完成后以永久重定向方式直接返回重寫后生成的新URI給客戶端,由客戶端重新發起請求;
    示例:
        server{
            ...
            rewrite^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
            rewrite^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
            return  403;
            ...
        }        
    注意:
        1)last和break請求處理是在服務器內部完成,客戶端僅請求一次。redirect和permanent需要客戶端再次請求
        2)URL重寫時所用的正則表達式需要使用PCRE格式。PCRE正則表達式元字符:
        字符匹配:.,[ ], [^]
        次數匹配:*,+, ?, {m}, {m,}, {m,n}
        位置錨定:^,$
        或者:|
        分組:(),后向引用, $1, $2, ...      

2、return;立即停止對請求的uri的處理,并返回指定的狀態碼;
        return code [text];
        return code URL;
        return URL;

3、  rewrite_log 重寫日志
    rewrite_log on | off;:是否將重寫日志記入errorlog中,默認為關閉;
    錯誤日志調試方法:錯誤日志debug,并開啟rewrite_log;  

4、  if (condition) { ... };引入一個新的配置上下文 ;條件滿足時,執行配置塊中的配置指令;server, location;
     condition可以為以下格式:
        比較操作符:
            ==
            !=
            ~:模式匹配,區分字符大小寫;
            ~*:模式匹配,不區分字符大小寫;
            !~:模式不匹配,區分字符大小寫;
            !~*:模式不匹配,不區分字符大小寫;
        文件及目錄存在性判斷:
            -f,!-f:是否存在且為普通文件;
            -d,!-d: 是否存在且為目錄;
            -e,!-e:是否存在;
            -x,!-x:是否存在且可執行;
      實例:
        1) cookie首部檢測匹配
            if($http_cookie ~* "id=([^;]+)(?:;|$)") {
                set $id $1;
            }
        2) 請求報文的請求方法是POST,返回405
            if($request_method = POST) {
                return 405;
            }
        3) 限速(如會員認為不是slow不做限速)
            if($slow) {
                limit_rate 10k;
            }
        4) 非法引用,返回403。注:也可以對非法引用到其他網頁
            if($invalid_referer) {
                return 403;
            }
5、set;設定變量值,或者自定義變量
     set $variable value;變量賦值
ngx _ http _ gzip _ module模塊:gip壓縮
1、gzip on | off;
    啟用或禁用gzip壓縮響應報文;

2、gzip_comp_level level;
    壓縮比,1-9,默認為1;

3、  gzip_disable regex ...;
    regex是為用于匹配客戶端響應器類型的正則表達式;表示對何種瀏覽器禁止使用壓縮功能;

4、  gzip_min_length length;
    觸發壓縮功能的響應報文的最小長度;

5、gzip_buffers number size;
    支持實現壓縮功能時為其配置的緩沖區數量及每個緩存區的大?。?

6、gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
    ginx作為代理服務器接收到從被代理服務器發送的響應報文后,在何種條件下啟用壓縮功能的;
        off:對代理的請求不啟用
        no-cache, no-store,private:表示從被代理服務器收到的響應報文首部的Cache-Control的值為此三者中任何一個,則啟用壓縮功能;

7、gzip_types mime-type ...;
    壓縮過濾器,僅對此處設定的MIME類型的內容啟用壓縮功能;
ngx _ http _ ssl_module模塊:
1、  ssl on | off;
    開啟或關閉ssl

2、ssl_certificate file;
    當前虛擬主機使用PEM格式的證書文件路徑;

3、ssl_certificate_key file;
    當前虛擬主機上與其證書對應的私鑰文件;

4、ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
    指明支持的ssl協議版本,[SSLv2]  [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]默認為后三個

5、ssl_session_timeout time;
    客戶端一側的連接可以復用ssl session cache中緩存 的ssl參數的有效時長;

6、ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
    指明ssl會話緩存機制;off | none | [builtin[:size]] [shared:name:size],默認使用shared
    off:禁止緩存,關閉緩存,不支持緩存功能
    none:禁止緩存,不響應緩存
    builtin[:size]:使用OpenSSL內建的緩存,此緩存為每worker進程私有;
    [shared:name:size]:在各worker之間使用一個共享的緩存;name:獨有名稱;size:緩存空間大小,默認1M,可以調到10M;
    注意:
        1)https定義時候也是定義在http{ }配置段,其監聽配置定義:listen 443 ssl。不是以監聽在443端口作為限定。用于限制只能通過ssl連接提供服務。
        2)若不在listen處定義,也可以在server{ }中定義ssl on; 來啟用https服務
    配置示例:
        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;
        }

原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/58138

(0)
M20-1馬星M20-1馬星
上一篇 2016-11-07
下一篇 2016-11-07

相關推薦

  • 正則表達式

    1:什么是正則表達式: 簡單的說,正則表達式就是處理字符串的方法,它是以行為單位進行字符串的處理行為,正則表達式通過一些特殊符號的輔助,可以讓用戶輕易達到查找,刪除,替換某特定字符串的處理程序。 2:一些參數: grep [-A] [-B] [–color=auto] ‘收索字符串’ filename -A :后面可加數字…

    2017-07-29
  • 高可用集群基本概念與heartbeat文本配置接口

    一、高可用集群基本概念:     什么是高可用集群:          所謂高可用集群,就是在出現故障時,可以把業務自動轉移到其他主機上并讓服務正常運行的集群構架     高可用集群的構架層…

    Linux干貨 2016-01-13
  • 淺談RPM

    淺談RPM    [先絮叨下編譯啊]   1、 庫:其實就是一個程序模塊(它沒有執行入口,不能獨立執行,只能被能獨立運行的程序調用時執行)你可以把它想象成工具螺絲刀,可執行的程序是就是你自己;螺絲刀能自己干活嗎?沒有螺絲刀能擰螺絲嗎?或者說你現在制作一個? 螺絲刀可以實現這個功能但需要你來執行這個動作。   2、靜態編譯:將程序所需要的所有的庫都編…

    Linux干貨 2015-04-27
  • tomcat之-從AT到Cluster

    本文導航 一、    LAMT搭建以及部署應用        1、LAMT部署                   (1)、安裝Apache     …

    2017-02-13
  • FHS文件系統各目錄及Linux文件類型和顏色標識整理

    一.FHS (Filesystem Hierarchy Standard文件系統層級標準)   使用文件系統層級標準可以使軟件和用戶可以預測已安裝文件和文件夾位置 文件系統各目錄:   /boot     系統引導啟動時要加載的靜態文件,內核和ramdisk及grub等    (系統啟動時…

    Linux干貨 2016-10-17
欧美性久久久久