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;
        }
    }
}
 

 


免責聲明!

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



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