nginx 主運行配置詳解(nginx.conf)


#==基礎配置==#
user nginx;
#設置運行用戶,當運行NGINX時,進程所使用的用戶,則進程擁有該用戶對文件或目錄的操作權限。
worker_processes 4;
#設置工作進程數量,一般情況下工作進程數等於CPU核心數。
worker_cpu_affinity 0001 0010 0100 1000;
#設置工作進程綁定CPU核心,一個工作進程使用一個CPU核心,可以減少進程頻繁切換導致CPU處理所導致的資源損
#耗。"0001"四位數表示CPU有四個核心,"1"在第幾位表示使用第幾個核心。
worker_rlimit_nofile 102400;
#設置每個工作進程可同時打開的文件描述符數量。在Linux系統中默認情況下為"1024",我們可以通過
#"ulimit -a |grep 'open files'"命令查看,設置此值可突破並發文件數量限制。
error_log /var/log/nginx/error.log error;
#設置錯誤日志文件路徑,可設置錯誤日志記錄的級別。
#錯誤日志級別有:
#   debug    調試,將記錄詳細的大量調試信息,適合開發人員開啟
#   info     信息,記錄更多的通知信息,不重要的
#   notice   通知,記錄通知信息,不重要的
#   warn     警告,記錄警告信息
#   error    錯誤,記錄錯誤信息
#   crit     嚴重,只記錄非常嚴重的錯誤信息
pid /run/nginx.pid;
#設置進程文件路徑,運行NGINX會生成一個PID進程文件到指定路徑,用於保證進程持久化運行。
include /usr/share/nginx/modules/*.conf;
#設置包含的其他配置文件,一些加載NGINX動態模塊相關配置文件,由"load_moule"指令控制動態模塊的加載。

#==事件配置==#
events {
    worker_connections 102400;
    #設置每個Worker進程可處理的並發連接數量,可根據需求合理配置此值。建議
    #與"worker_rlimit_nofile"指令的值一致或更小。
}

#==核心配置==#
http {
    include             /etc/nginx/mime.types;
    #設置還包含其他配置文件,“mime.types”文件,記錄MIME類型與文件后綴的映射關系,MIME類型是互聯網媒
    #體類型的縮寫。所以該文件是用於WEB服務可以識別的、允許用戶上傳的這些后綴相關的媒體文件。
    default_type        text/plain;
    #設置默認MIME類型,當用戶上傳一個文件,非“mime.types”文件中記錄的后綴文件時的處理方式,則將該文
    #件識別默認指定MIME類型的文件,"text/plain"表示將會保存為".txt"格式的文件。
    types_hash_max_size 2048;
    #設置類型哈希表的大小,單位為字節。用於將MIME類型的數據通過哈希后緩存到內存中,以提高對MIME類型映
    #射表的讀取效率。
    charset UTF-8;
    #設置字符集編碼,防止NGINX對於中文返回的顯示亂碼。
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #定義日志格式,“main”表示該日志格式名,用於下方“access_log”訪問日志中調用
    #	$remote_addr		遠程訪問地址
    #	$remote_user		遠程訪問用戶
    #	$time_local		訪問時間
    #	$request		請求的URL與HTTP協議
    #	$status			請求狀態,成功為200
    #	$body_bytes_sent	發送給客戶端文件主機內容大小
    #	$http_referer		從哪個頁面連接訪問過來的
    #	$http_user_agent	客戶端瀏覽器的相關信息
    #	$http_x_forwarded_for	遠程訪問地址,與remote_addr相同
    sendfile            on;
    #啟用或禁用"sendfile()"函數的調用,"on" or "off","on"表示啟用,"off"表示禁用。當線程響應
    #時,"sendfile()"函數會報告線程數據不在內存中而是在硬盤中,則線程直接去硬盤拿到響應數據直接傳送
    #給用戶,而無需調用內存去硬盤拿響應數據,省去了調用內存的步驟,在小型WEB項目中可以提高請求響應效
    #率,若是重量級WEB項目,為了平衡磁盤IO則不建議開啟。我們也可以將此指令稱之為高效傳輸模式。
    tcp_nopush          on;
    #啟用或禁用TCP_NOPUSH套接字選項,"on" or "off","on"表示啟用,啟用此項的前提是必須開
    #啟"sendfile","off"表示禁用。有時候在傳輸一個響應數據時,可能會產生多個小塊數據包傳出,可能這個
    #小塊數據包頭部大小為30字節,而真正數據信息只有1字節,在高並發環境下會導致網絡擁塞、帶寬不夠用問
    #題。開啟此項則傳出的數據包會積累一下在傳出,可以防止網絡擁塞,減少帶寬的占用。
    tcp_nodelay         on;
    #啟用或禁用TCP_NODELAY套接字選項,"on" or "off","on"表示啟用,"off"表示禁用。此項與
    #"tcp_nopush"的功能剛好相反,若開啟此項則對於小塊數據包不等待立即傳輸,有時候一個WEB應用期望發
    #送小塊數據時,則建議開啟,當“tcp_nopush”和“tcp_nodelay”同時開啟時,NGINX會平衡這兩個功能的使
    #用。
    keepalive_timeout   75s;
    #設置保持客戶端連接活躍狀態的超時時間,單位為秒。
    send_timeout 60s;
    #設置服務器將響應發送給客戶端的超時時間,單位為秒。

    include /etc/nginx/conf.d/*.conf;
    #設置還包含其他配置文件,我們可以將一些其他配置分離到另外一個文件中處理,避免主配置文件因為配置太
    #多導致混亂不方便管理,比如下面的"server {}",在NGINX中我們可以配置多個"server {}"則我們可以將
    #每個"server {}"分離到另外一個配置文件中,即一個配置文件對應一個WEB站點。

    #==WEB站點配置==#
    server {
        listen       80 default_server;
        #設置監聽IPV4的地址與端口,地址為空表示監聽所有,“default_server”即默認服務器,DNS映射一個
        #域名到該主機,但是當用戶訪問的這個域名與這些WEB虛擬主機綁定的域名都不匹配的情況下,默認由監
        #聽“default_server”的虛擬主機呈現內容。
        listen       [::]:80 default_server;
        #設置監聽IPV6的地址與端口。
        server_name  static.test.com;
        #設置域名綁定,綁定一個域名。
        access_log  /var/log/nginx/static_access.log  main;
        #設置訪問日志文件路徑,用於記錄每個訪問請求,“main”調用上面日志格式
        location / {
        #設置訪問位置(URI),即用戶訪問的URL的尾部部分。當匹配到請求的URI時,則呈現由"{ }"中定義的
        #內容。location指令針對於匹配URI可以嵌入正則表達式,實現一些高級應用,詳細用法請參考《HTTP
        #配置高級指令》。
            root	/usr/share/nginx/html;
            #設置WEB應用根目錄。
    	    index index.html;
            #設置默認首頁文件,當用戶訪問域名或IP地址是自動索引呈現該文件中的內容,該文件在若為相對路
    	    #徑則會在WEB應用根目錄下。
        }
        error_page 404 /404.html;
        #當匹配到響應代碼,則將請求重定向到指定的URI。
        location = /40x.html {
        #匹配上面重定向的URI,則呈現相關響應代碼的會呈現給用戶的內容。若"{}"為空則返回默認頁面。
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM