nginx.conf文件配置明細詳解

#etnx運行的用戶和用戶組
user nginx nginx;

#工做進程數,建議設置爲CPU的總核數
worker_processes  16;

#全局錯誤日誌定義類型,日誌等級從低到高依次爲:
#debug | info | notice | warn | error | crit
error_log  logs/error.log  info;

#記錄主進程ID的文件
pid        /nginx-1.13.7/nginx.pid;

#一個進程能打開的文件描述符最大值,理論上該值因該是最多能打開的文件數除以進程數。
#可是因爲nginx負載並非徹底均衡的,因此這個值最好等於最多能打開的文件數。
#LINUX系統能夠執行 sysctl -a | grep fs.file 能夠看到linux文件描述符。
worker_rlimit_nofile 65535;

#鏈接數上限,單個進程容許的最大鏈接數
events {   
    #參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型,若是跑在FreeBSD上面,就用kqueue模型。
    #use epoll;
    #單個進程最大鏈接數(最大鏈接數=鏈接數*進程數)
    worker_connections 1024;
}

#設定http服務器,利用它的反向代理功能提供負載均衡支持
http {
    #文件擴展名與文件類型映射表
    include       mime.types;
    
    #默認文件類型
    default_type  application/octet-stream;
    
    #日誌格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                                   '$status $body_bytes_sent "$http_referer" '

                                   '"$http_user_agent" "$http_x_forwarded_for"';

    #access log 記錄了哪些用戶,哪些頁面以及用戶瀏覽器、ip和其餘的訪問信息
    access_log  logs/access.log  main;
    
    #服務器名字的hash表大小
    server_names_hash_bucket_size 128;
    
    #客戶端請求頭緩衝大小。
    #nginx默認會用client_header_buffer_size這個buffer來讀取header值,
    #若是header過大,它會使用large_client_header_buffers來讀取。
    #若是設置太小HTTP頭/Cookie過大 會報400 錯誤 nginx 400 bad request
    #若是超過buffer,就會報HTTP 414錯誤(URI Too Long)
    #nginx接受最長的HTTP頭部大小必須比其中一個buffer大
    #不然就會報400的HTTP錯誤(Bad Request)
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;

    #客戶端請求體的大小
    client_body_buffer_size    8m;

    #隱藏ngnix版本號
    server_tokens off;

    #忽略不合法的請求頭
    ignore_invalid_headers   on;

    #指定啓用除第一條error_page指令之外其餘的error_page。
    recursive_error_pages    on;

    #讓 nginx 在處理本身內部重定向時不默認使用  server_name 設置中的第一個域名
    server_name_in_redirect off;

    #開啓文件傳輸,通常應用都應設置爲on;如果有下載的應用,則能夠設置成off來平衡網絡I/O和磁盤的I/O來下降系統負載
    sendfile  on;

    #告訴nginx在一個數據包裏發送全部頭文件,而不一個接一個的發送。
    tcp_nopush  on;

    #告訴nginx不要緩存數據,而是一段一段的發送--當須要及時發送數據時,就應該給應用設置這個屬性,
    #這樣發送一小塊數據信息時就不能當即獲得返回值。
    tcp_nodelay    on;

    #長鏈接超時時間,單位是秒
    keepalive_timeout  65;

    #gzip模塊設置,使用 gzip 壓縮能夠下降網站帶寬消耗,同時提高訪問速度。
    gzip  on;                     #開啓gzip
    gzip_min_length  1k;          #最小壓縮大小
    gzip_buffers     4 16k;       #壓縮緩衝區
    gzip_http_version 1.0;        #壓縮版本
    gzip_comp_level 2;            #壓縮等級
    gzip_types   text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;          #壓縮類型

    #upstream做負載均衡,在此配置須要輪詢的服務器地址和端口號
    #max_fails爲容許請求失敗的次數,默認爲1.
    #weight爲輪詢權重,根據不一樣的權重分配能夠用來平衡服務器的訪問率。
    #指定要域名對應的WEB項目訪問地址
    upstream nginx.www.caitujun.com {
        #ip_hash指令,將同一用戶引入同一服務器。
        ip_hash;
        server 192.168.100.110:4421 max_fails=3 weight=1;
        server 192.168.100.110:4422 max_fails=3 weight=2;
        server 192.168.100.110:4423 max_fails=3 weight=3;
    }

    #虛擬主機配置
    server {
        #監聽端口
        listen       80;

        #域名能夠有多個,用空格隔開
        server_name   www.caitujun.com caitujun.com;
        
        #反向代理配置,
        #將全部請求爲http://nginx.www.caitujun.com的請求所有轉發到upstream中定義的目標服務器中。
        location / {
            #定義首頁索引文件的名稱
            #index index.php index.html index.htm;

            #此處配置的域名必須與upstream的域名一致,才能轉發。
            proxy_pass     http://nginx.www.caitujun.com;
            
            #如下是一些反向代理的配置可刪除
            proxy_redirect             off;
            
            #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP
            proxy_set_header           Host $host; 
            proxy_set_header           X-Real-IP $remote_addr; 
            proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; 
            
            #client_max_body_size       10m;   #容許客戶端請求的最大單文件字節數
            #client_body_buffer_size    128k;  #緩衝區代理緩衝用戶端請求的最大字節數
            #proxy_connect_timeout      300;   #nginx跟後端服務器鏈接超時時間(代理鏈接超時)
            #proxy_send_timeout         300;   #後端服務器數據回傳時間(代理髮送超時)
            #proxy_read_timeout         300;   #鏈接成功後,後端服務器響應時間(代理接收超時)
            #proxy_buffer_size          4k;    #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
            #proxy_buffers              4 32k; #proxy_buffers緩衝區,網頁平均在32k如下的話,這樣設置
            #proxy_busy_buffers_size    64k;   #高負荷下緩衝大小(proxy_buffers*2)
            #proxy_temp_file_write_size 64k;   #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
        }
        
        #圖片緩存時間設置
         location ~.+\.(gif|jpg|jpeg|png|bmp|swf)$
         {
           expires 10d;
         }
         
         #JS和CSS緩存時間設置
         location ~ .+\.(js|css)$
         {
           expires 1h;
         }
        
        #單獨的access_log文件
        access_log  logs/www.caitujun.com.access.log  main;

        #設定查看Nginx狀態的地址
        location ^~/NginxStatus{
             stub_status on;
             access_log on;
             auth_basic "NginxStatus";
             auth_basic_user_file htpasswd;#htpasswd文件的內容能夠用apache提供的htpasswd工具來產生。
        }
                
        #禁止訪問 .htxxx 文件
        location ~ /\.ht {
            deny all;
        }

        #字符集
        charset utf-8;
        
        #錯誤頁面
        error_page   500 502 503 504 /50x.html;  
            location = /50x.html {
            root   /root;
        }
    }
}
 
相關文章
相關標籤/搜索