Nginx配置文件nginx.conf的說明

1. /etc/nginx/nginx.conf的常用配置及說明

# 指定Nginx Worker進程運行用戶, 語法: user user [group]
user nginx;

# worker進程數, 通常設置成和CPU的數量相等, 默認爲1. 
worker_processes 1;

# 指定進程id存儲文件
pid /run/nginx.pid;

# 事件模塊
events {
    # 每個worker進程的連接數, 通過worker_connections和worker_proceses可以計算出maxclients: 
    # max_clients = worker_processes * worker_connections, 作爲反向代理時, max_clients爲: 
    # max_clients = worker_processes * worker_connections/4
    worker_connections 768;

    # 若開啓此配置, 則Nginx會在接到一個新的連接通知之後, 儘可能多地去接受, 默認爲: off
    multi_accept off;
}

# http核心模塊
http {
    ##
    # 基本設置
    ##

    # 是否啓動高效傳輸文件模式, sendfile可以讓Nginx在傳輸文件時直接在磁盤和tcp socket之間傳輸數據. 
    # 如果這個參數不開啓, 會先在用戶空間(Nginx進程空間)申請一個buffer, 用read函數把數據從磁盤讀到cache,
    # 再從cache讀取到用戶空間的buffer, 再用write函數把數據從用戶空間的buffer寫入到內核的buffer, 
    # 最後到tcp socket. 開啓這個參數後可以讓數據不用經過用戶buffer, 默認off. 
    sendfile on;

    # 必須在sendfile開啓模式纔有效, 告訴Nginx在一個數據包裏發送所有頭文件, 而不一個接一個的發送, 默認off. 
    tcp_nopush on;

    # 告訴Nginx不要緩存數據, 而是一段一段的發送, 當需要及時發送數據時, 就應該開啓這個功能, 
    # 這樣發送一小塊數據信息時就能夠立即得到返回值, 默認on. 
    tcp_nodelay on;

    # 給客戶端分配keep-alive鏈接超時時間, 服務器將在這個超時時間過後關閉鏈接. 
    # 我們將它設置低些可以讓Ngnix持續工作的時間更長. 
    keepalive_timeout 65;

    # 影響散列表的衝突率, types_hash_max_size越大, 就會消耗更多的內存, 但散列key的衝突率會降低, 
    # 檢索速度就更快. types_hash_max_size越小, 消耗的內存就越小, 但散列key的衝突率可能上升. 
    types_hash_max_size 2048;
    
    # 是否顯示版本號, 若不顯示, 瀏覽器訪問時抓包, 查看HTTP響應的Server頭沒有版本號, 默認on 
    server_tokens on;

    # 保存服務器名字的hash表是由指令server_names_hash_max_size和server_names_hash_bucket_size所控制, 
    # 若Nginx給出需要增大hash max size或hash bucket size的提示, 那麼首要的是增大前一個參數的大小. 
    # server_names_hash_max_size 512;
    # server_names_hash_bucket_size 64;

    # 若爲off, 則始終按照默認的80端口, 若爲on, 則返回當前正在監聽的端口, 默認on. 
    port_in_redirect on;
    
    # 若爲off, 則會以當前服務器的IP地址進行拼接URL. 若爲on, 則會首先查找server_name, 
    # 若沒有找到, 則會查找請求頭的HOST字段, 若還是沒有, 則以當前服務器的IP進行拼接, 默認on. 
    server_name_in_redirect on;

    # 設定MIME類型, 類型由mime.type文件定義. 
    include /etc/nginx/mime.types;
    
    # 設定默認的MIME類型, 默認: text/plain. 
    default_type application/octet-stream;

    # 設置上傳文件大小最大爲1000m, 超過會報413錯誤
    client_max_body_size 1000m;

    ##
    # SSL協議設置
    ##

    # 用於指定支持的加密協議. 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    
    # 設置協商加密算法時, 優先使用服務端的加密套件, 而不是客戶端瀏覽器的加密套件, 默認off. 
    ssl_prefer_server_ciphers off;

    ##
    # 日誌設置
    ##

    # 每一個訪問請求的記錄位置
    access_log /var/log/nginx/access.log;
    
    # Nginx錯誤信息的記錄位置
    error_log /var/log/nginx/error.log;

    ##
    # Gzip壓縮設置
    ##

    # 是否啓動Gzip
    gzip on;
    
    # IE6的某些版本對gzip的壓縮支持很不好, 會造成頁面的假死, 
    # 對img進行Gzip後造成IE6的假死, 把對img的Gzip壓縮去掉後就正常了.
    gzip_disable "msie6";
    
    # 和HTTP頭有關係, 加個vary頭, 給代理服務器用的, 有的瀏覽器支持壓縮, 有的不支持, 
    # 爲了避免浪費不支持的也壓縮, 根據客戶端的HTTP頭來判斷, 是否需要壓縮. 
    gzip_vary on;
    
    # Nginx作爲反向代理的時候該參數起作用, 根據某些請求和應答來決定是否在對代理請求的應答啓用Gzip壓縮, 
    # 是否壓縮取決於請求頭中的"Via"字段, 指令中可以同時指定多個不同的參數, 可選值值爲:
    # off - 關閉所有的代理結果數據的壓縮  
    # expired - 啓用壓縮,如果header頭中包含 "Expires" 頭信息  
    # no-cache - 啓用壓縮,如果header頭中包含 "Cache-Control:no-cache" 頭信息  
    # no-store - 啓用壓縮,如果header頭中包含 "Cache-Control:no-store" 頭信息  
    # private - 啓用壓縮,如果header頭中包含 "Cache-Control:private" 頭信息  
    # no_last_modified - 啓用壓縮,如果header頭中不包含 "Last-Modified" 頭信息  
    # no_etag - 啓用壓縮 ,如果header頭中不包含 "ETag" 頭信息  
    # auth - 啓用壓縮 , 如果header頭中包含 "Authorization" 頭信息  
    # any - 無條件啓用壓 
    # 默認爲off.
    gzip_proxied off;
    
    # Gzip壓縮比, 值爲1~9, 1的壓縮比最小處理速度最快, 9的壓縮比最大但處理最慢(傳輸快但比較消耗CPU)
    gzip_comp_level 6;
    
    # 設置允許壓縮的頁面最小字節數, 默認值是0, 不管頁面多大都壓縮, 建議設置大於1k(即1024), 小於1k可能會越壓越大.
    gzip_min_length 1024;
    
    # 設置系統獲取幾個單位的緩存用於存儲Gzip的壓縮結果數據流, 4 8k代表: 按照原始數據大小以8k爲單位的4倍申請內存.
    gzip_buffers 4 8k;
    
    # 匹配MIME類型進行壓縮
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
    # 識別HTTP的協議版本, 99.99%的瀏覽器都支持1.1, 所以可以不用設這個值, 保持系統默認即可, 默認1.1. 
    gzip_http_version 1.1;

    ##
    # 虛擬主機設置
    ##

    # Nginx的配置很靈活, 支持include配置文件, 如果我們的域名都配置到nginx.conf, 那麼這個文件就會比較亂,
    # 也影響管理和閱讀, 所以直接拆分出來, 分成不同的配置文件. 
    include /etc/nginx/conf.d/*.conf;
    
    # 加載一個外部的配置文件, sites-enabled文件夾下只有一個default文件, 
    # 這個外部的配置文件就是負責我們Nginx的默認代理, 也就是server塊的配置. 
    include /etc/nginx/sites-enabled/*;

    ##
    # 緩存設置
    ##

    # 緩存文件路徑
    # levels=1:2 設置目錄深度, 第一層目錄是1個字符, 第2層是2個字符. 
    # keys_zone 設置web緩存名稱和內存緩存空間大小. 
    # inactive 自動清除緩存文件時間. 
    # max_size 硬盤空間最大可使用值, 如果緩存空間滿, 默認覆蓋掉緩存時間最長的資源.  
    proxy_cache_path /data/proxy/cache levels=1:2 keys_zone=cache_one:500m inactive=7d max_size=10g;
    
    # 指定臨時緩存文件的存儲路徑(路徑需和上面路徑在同一分區)
    proxy_temp_path /data/proxy/temp;
}

# 配置郵件服務器
#mail {
#    # See sample authentication script at:
#    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#    # 指定Nginx提供郵件服務時, 用於HTTP認證的服務地址
#    # auth_http localhost/auth.php;
#    # 指定現有客戶端上的POP3協議的擴展
#    # pop3_capabilities "TOP" "USER";
#    # 指定現有客戶端上的IMAP協議的擴展
#    # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#    server {
#        # 指定郵件服務器監聽的IP地址和端口. 
#        listen     localhost:110;
#       # 指定虛擬機支持的加密協議. 
#        protocol   pop3;
#        # 是否開啓郵件代理
#        proxy      on;
#    }
# 
#    server {
#        # 指定郵件服務器監聽的IP地址和端口. 
#        listen     localhost:143;
#        # 指定虛擬機支持的加密協議. 
#        protocol   imap;
#        # 是否開啓郵件代理
#        proxy      on;
#    }
#}

/etc/nginx/sites-enabled/default的常用配置及說明

server {
    # Nginx監聽的IP及端口號, 可以監聽多個
    listen 127.0.0.1:80;
    # Nginx監聽的IPv6的IP及端口號
    listen [::]:80;

    # SSL協議配置
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    # 加載配置片段
    # include snippets/snakeoil.conf;

    # 指定哪個目錄作爲根目錄, 用於文件的檢索
    root /var/www/html;

    # 在上面指定的根目錄下, 找到如下頁面, 作爲Nginx的默認主頁
    index index.html index.htm index.nginx-debian.html;

    # 配置server的多域名, 域名可以通過以下方式: 
    # 1. 完整的域名, 如: www.example.com
    # 2. 帶*號開頭的域名, 如: *.example.com
    # 3. 帶*號末尾的域名, 如: mail.*
    # 4. 可匹配的正則表達式
    server_name www.paulandcode.com;

    location / {
        # 原請求不存在時, 重定向到指定的URI, 並返回結果(此處設定爲404)
        try_files $uri $uri/ =404;
    }

    # 靜態文件的處理
    location ~ ^/(images|javascript|js|css|flash|media|static)/ {
        # 設置被代理服務器的地址, 包含傳輸協議, 主機名稱或IP地址加端口號, URI等要素. 
        proxy_pass http://www.paulandcode.com:8080;
        
        # 自定義http header頭, 用於發送給後端真實服務器. 
         proxy_set_header Host $host:$server_port;
         
         # 指定哪個目錄作爲根目錄, 用於文件的檢索
         root /home/django/projects/blogs;
        
        # 啓用Gzip壓縮
        gzip on;
         # 對js、css、jpg、png、gif格式的文件啓用gzip壓縮功能
         gzip_types application/javascript text/css image/jpeg image/png image/gif;
         # 所壓縮文件的最小值,小於這個的不會壓縮
         gzip_min_length 1024;

         # 使用名爲cache_one的對應緩存配置. 
         proxy_cache cache_one;
         # 對httpcode爲200, 206, 301, 302, 304的緩存10天. 
         proxy_cache_valid 200 206 301 302 304 10d;
         # 定義緩存唯一key, 通過唯一key來進行hash存取. 
         proxy_cache_key $uri
        # 過期30天, 靜態文件不怎麼更新, 過期可以設大一點, 如果頻繁更新, 則可以設置得小一點. 
         expires 30d;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章