Nginx配置文件(二)

Nginx的所有配置文件都在 /etc/nginx  目錄下面nginx.conf

    主要有main配置段 ,也叫核心配置段,主配置段

    還有http和mail

    

    配置指令以分號結尾(;)而且語法區分大小寫

    eg: directive value1 [value2 ...];

    而且還支持使用變量

        模塊內置變量 :變量自動賦值   

        自定義變量:set var_name value


    主配置段的指令的類別:

        用於調試,定位問題(生產中不用開啓)

        正常運行,必備的配置

        優化性能的配置

        事件相關的配置(一個事件響應多個請求,master指向root,worker 指向的Nginx。)

    

           
        正常運行的必備配置:
            1、user USERNAME [GROUPNAME];
                指定運行worker進程的用戶 和組,例如:
                user nginx nginx;s
                
            2、pid /path/to/pid_file;
                指定nginx的pid文件;
                
            3、worker_rlimit_nofile #;
                指定一個worker進程所能夠打開的最大文件句柄數;
                
            4、worker_rlimit_sigpending #;
                指定每個用戶能夠發往worker的信號的數量;
                
        優化性能相關的配置:
            1、worker_processes #:
                worker線程的個數;通常應該爲物理CPU核心個數減1;
                啓動的work線程的個數。
            2、worker_cpu_affinity cpumask ...;
                綁定worker進程至指定的CPU上;
                    CPUMASK
                        0001
                        0010
                        0100
                        1000
                    例如:
                        worker_cpu_affinity 00000001 00000010 00000100;
                        
            3、timer_resolution t;
                gettimeofday();
                
            4、worker_priority nice;
                -20, 19
                
        事件相關的配置:
            1、accept_mutex [on|off]
                內部調用用戶 請求至各worker時用的負載均衡鎖;打開時表示能讓多個worker輪流                   地、序列化地與響應新請求;
                
            2、lock_file /path/to/lock_file;
            
            3、accept_mutex_delay #ms;
                
            4、use [epoll|rgsig|select|poll];
                定義使用的事件模型;建議讓Nginx自動選擇;
                
            5、worker_connections #;
                每個worker進程所能夠響應的最大併發請求數;
                
        用於調試、定位問題:
            1、daemon [off|on]
                是否以守護進程方式啓動nginx;
                
            2、master_process on|off;
                是否以master/worker模型來運行nginx;
                
            3、error_log /path/to/error_log level;
                錯誤日誌文件及其級別;出於調試的目的,可以使用debug級別,但此級別只有在編譯                 nginx時使用了--with-debug選項纔有效;

        

     Nginx

        main配置段
    http {
    }
    
    http配置:http core 配置一個靜態web服務器
        ngx_http_core_module
        
        配置框架:
        http {
            upstream {
                ...
            }
            
            server {
                listen IP:PORT;
                # 虛擬主機
                location /URL {
                    if ...{
                        ...
                    }
                    root "/path/to/somewhere";
                    ...
                }
            }
            server {
                ,,.
            }
        }
        
            注意:與http配置相關的指令必須放在http、server、location、upstream、if塊中;
            
        虛擬主機相關的配置:
            1、server {}
                定義一個虛擬主機;
                
            2、listen
                監聽的端口
                完整格式 :listen address[:port] [default_server] [ssl] [spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
                
                listen address[:port] [default_server] ssl
                
                backlog=number: 指明TCP協議backlog隊列的大小。默認爲-1,表示不設置;
                rcvbuf=size:設定監聽句柄的SO_RCVBUF參數;
                
                例如:
                    listen 172.16.100.8:8080
                    
            3、server_name name [...];
                後可跟多個主機名;名稱還可以使用通配符和正則表達式(~);
                    
                (1) 先做精確匹配;www.magedu.com:
                (2) 左側通配符匹配,例如:*.magedu.com;
                (3) 右側通配符匹配,例如:www.*;
                (4) 正則表達式匹配,例如: ~^.*\.magedu\.com$
                (5) default_server
                
            4、location [=|~|~*|^~] /uri {...}
                location @name
                功能:允許根據用戶請求的URI來匹配定義的各location,匹配到時,此請求將被相應                         的location塊中的配置所處理;
                
                    =: 精確匹配檢查;
                    ~: 正則表達式模式匹配,區分字符大小寫;
                    ~*:正則表達式模式 匹配,不區分字符大小寫;
                    ^~:URI的前半部分匹配,不檢查正則表達式;
                    
                匹配優先級:精確匹配(=)、^~、~和~*、由不帶符號的URL進行左側匹配;
                    
            5、root
                設置web資源路徑映射;用於指明請求的URL所對應的文檔的根目錄路徑;
                
                location /images/ {
                    root "/web/imgs/";
                }
                
            6、alias path
                用於location配置段,定義路徑別名
                
                location /images/ {
                    alias /www/pictures/;
                }
                
                注意:root表示指明路徑爲對應location的“ /” URL;alias表示路徑映射,即                    location中的URL是相對於alias所指明的路徑而言;
                
            7、index file
                默認主頁面
                    index index.html;
                    
            8、error_page code [...] [=code] URI | @name
                根據http狀態碼重定向錯誤頁面
                error_page  404   /404.html
                
                =[code]: 以指定的響應碼進行響應;省略code表示以新資源的響應碼爲響應碼;
                
            9、try_files
                try_files path1[,path2,...] URI
                
        網絡連接相關的配置:
            1、keepalive_timeout time;
                保持連接的超時時長,默認爲75s;
                
            2、keepalive_requests #;
                在一次保持連接上允許承載最大資源請求數;
                
            3、keepalive_disable [msie6|safari|none]
                爲指定類型的瀏覽器禁用長連接;
                
            4、tcp_nodelay on|off
                對長連接是否使用TCP_NODELAY選項;
                
            5、client_header_timeout time;
                讀取http請求報文首部的超時時長;
                
            6、client_body_timeout time;
                讀取http請求報文body部分的超時時長;
                
            7、send_timeout time;
                發送響應報文的超時時長;
                
        對客戶端請求進行限制:
            1、limit_except METHOD {...}
                指定對範圍之外的其它方法的訪問控制;
                
                limit_except GET {
                    allow 172.16.0.0/16;
                    deny all;
                }
                
            2、client_body_max_size SIZE;
                限制請求報文中body部分的上限;通過檢測請求報文首部中的"Content_Length"來判                  定;
                
            3、limit_rate speed;    
                限制客戶端每秒種傳輸的字節數,默認爲0,表示無限制;
                
        對內存或磁盤資源進行分配
            1、client_body_in_file_only on|clean|off;
                請求報文的body部分是否可暫存於磁盤;on表示允許,並且即使請求結束,也不會刪                  除暫存的內容;clean表示會刪除;off不允許暫存;
                
            2、client_body_in_single_buffer on|off
                
            3、client_body_buffer_size size;
            
            4、client_body_temp_path DIR [level1 [level2 [level3 [level4]]]]
                
                例如:client_body_temp_path /var/tmp/nginx/client  1 2
                
            5、client_header_buffer_size size:
            
        MIME類型相關的配置:
            
            1、types {}
                定義MIME types至文件的擴展名;
                    types {
                        text/html .html;
                        image/jpeg  .jpg;
                    }
                    
            2、default_type MIME-TYPE;
            
        文件操作優化相關的配置:
            1、sendfile on|off;
            
            2、aio on|off;
            
            3、directio size|off;
                是否使用O_DIRECT選項去請求讀取文件;與sendfile功能互斥;
                
            4、open_file_cache max=N[inactive=time] | off;
                nginx可以緩存以下三種信息:
                    (1) 文件句柄、文件大小和最近一次修改時間;
                    (2) 打開目錄的目錄結構;
                    (3) 沒有找到的或者沒有權限操作的文件的相關信息;
                    
                max=N表示可緩存的最大條目上限;一旦到達上限,則會使用LRU從緩存中刪除最近最                  少使用的條目;
                
                inactive=time: 在inactive指定的時長內沒有被訪問過的緩存條目就會淘汰;
                
            5、open_file_cache_errors on|off;
                是否緩存在文件緩存中緩存打開文件時出現找不到路徑,沒有權限等的錯誤信息;
                
            6、open_file_cache_min_uses time;
                每隔多久檢查一次緩存中緩存條目的有效性;默認60s;
                
        重點關注:server{}, location{}, listen, server_name, root, alias,                                    keepalive_timeout, keepalive_requests, error_page
        
    基於IP的訪問控制:
        http, server, location
            allow, deny
            
    基於用戶的basic認證配置:
        auth_basic
        auth_basic_user_file
            htpasswd命令創建用戶賬號文件;
            
    基於gzip實現響應報文壓縮:
        
    定製響應首部
        add_header name value [always];
        expires
        
    定製訪問日誌
        log_format
        access_log
        
            定製出與httpd的combined格式相同的日誌內容;
            
    定義合法引用:
        valid_referers none | blocked | server_names | string ...;
        if ($invalid_referer) {
            return 403
        }
        
    URL rewrite: URL地址重寫
        rewrite regex replacement [flag];
            last
            break
            redirect
            permanent
        
        if (condition) {
            ...
        }
        
        

           

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章