nginx 生產集羣配置詳解

配置

主要描述nginx.conf文件的內容javascript

nginx.conf文件結構css

主要由三塊組成 全局塊 events塊 http塊,http塊中包含http全局塊和多個server塊,每一個server塊中包含server全局塊和多個location塊,採用就近原則生效html

全局塊前端

配置一些影響總體運行的指令,一般有服務器用戶組 容許生成的worker process nginx.pid存放路徑 日誌存放路徑 類型 配置文件引入java

events塊node

影響nginx服務器與用戶的網絡鏈接,這一塊的設置對服務的性能影響較大。一般有是否開啓對WP下的網絡進行序列化 是否容許同時接受多個網絡鏈接 事件驅動模型 每一個WP能夠同時支持處理的最大鏈接數nginx

http塊git

重要組成部分,代理、緩存和日誌定義、第三方模塊的配置。 一般配置 文件引入MIME-TYPE定義 日誌自定義 是否使用sendfile傳輸文件 鏈接超時時間 單鏈接請求數上限web

具體配置詳解json

 

#$開頭是變量

#定義Nginx運行的用戶和用戶組

user work work;

#nginx進程數,建議設置爲等於CPU總核心數

worker_processes  auto;

#指當一個nginx進程打開的最多文件描述符數目

worker_rlimit_nofile 204800;

#全局錯誤日誌定義類型,[ debug | info | notice | warn | error | crit ]

error_log /opt/log/nginx/error.log error;

#工做模式及鏈接數上限

events {

       #參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 

       #epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型,若是跑在FreeBSD上面,就用kqueue模型

       use epoll;

       #單個後臺worker process進程的最大併發連接數

       worker_connections  102400;

}

#設定http服務器,利用它的反向代理功能提供負載均衡支持

http {

       #文件擴展名與文件類型映射表

       include       mime.types;

       #默認文件類型

       default_type application/octet-stream;

       #默認編碼

       charset utf-8;

       #設定日誌格式

       #log_format  main '$idXXXX\t$remote_addr\t$remote_user\t$time_local\t$http_host\t$request\t'

       #             '$status\t$body_bytes_sent\t$http_referer\t'

       #            '$http_user_agent\t$http_x_forwarded_for\t$request_time\t$upstream_response_time\t$userid';

       log_format main "$cookie_idXXXX\t$remote_addr\t$remote_user\t[$time_local]\t$request_method\t$host\t$request_uri\t"

                       "$request_time\t$status\t$body_bytes_sent\t'$http_referer'\t"

                       "'$http_user_agent'\t'$http_x_forwarded_for'\t$upstream_addr\t$upstream_response_time\t$upstream_status\t";

                 

    #不可見字符分隔日誌格式

   #include other_log_format.conf;

    #實時日誌收集json格式日誌

   #include json_log_format.conf;

 

       #日誌流格式

       log_format stream_log "$cookie_idXXXX\t$remote_addr\t$remote_user\t[$time_local]\t$request_method\t$host\t$request_uri\t"

                     "$request_time\t$status\t$body_bytes_sent\t'$http_referer'\t"

                     "'$http_user_agent'\t'$http_x_forwarded_for'\t$upstream_addr\t$upstream_response_time\t3";

       

       #成功日誌

       access_log  /opt/log/nginx/access.log main;

       #access_log syslog:local6:notice:log1.op.XXXXdns.org:514:nginx-main-log main;

       

       #指定nginx 是否調用sendfile 函數(zero copy 方式)來輸出文件,對於普通應用,

       #必須設爲on,若是用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡I/O處理速度,下降系統的uptime.

       sendfile        on;

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

       keepalive_timeout  60;

       #服務器名稱哈希表的最大值(默認512)[hash%size]

       server_names_hash_max_size 1024;

       #服務器名字的hash表大小

       server_names_hash_bucket_size 256;

       #客戶請求頭緩衝大小

       client_header_buffer_size 4k;

       #若是header過大,它會使用large_client_header_buffers來讀取

       large_client_header_buffers 4 256k;

       client_header_timeout  1m;

       client_body_timeout    1m;

       send_timeout           1m;

       #防止網絡阻塞

       tcp_nopush     on;

       tcp_nodelay    on;

       #容許客戶端請求的最大單文件字節數

       client_max_body_size 50m;

       

       #緩衝區代理緩衝用戶端請求的最大字節數

       client_body_buffer_size 50m;

       

       #nginx跟後端服務器鏈接超時時間(代理鏈接超時)

       proxy_connect_timeout 5;

       

       #後端服務器數據回傳時間(代理髮送超時)

       proxy_send_timeout 15;

       

       #鏈接成功後,後端服務器響應時間(代理接收超時)

       proxy_read_timeout 15;

       

       #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小

       proxy_buffer_size 4k;

       

       #proxy_buffers緩衝區,網頁平均在32k如下的話,這樣設置

       proxy_buffers 8 32k;

       

       #高負荷下緩衝大小(proxy_buffers*2)

       proxy_busy_buffers_size 64k;

       

       #設定緩存文件夾大小,大於這個值,將從upstream服務器傳

       proxy_temp_file_write_size 64k;

       proxy_intercept_errors  on;

       #客戶端放棄請求,nginx也放棄對後端的請求

       #proxy_ignore_client_abort on;

 

    #代理緩存頭信息最大長度[設置頭部哈希表的最大值,不能小於你後端服務器設置的頭部總數]

   proxy_headers_hash_max_size 512;

    #設置頭部哈希表大小(默認64)[這將限制頭部字段名稱的長度大小,若是你使用超過64個字符的頭部名能夠加大這個值。]

   proxy_headers_hash_bucket_size 256;

 

    #變量哈希表的最大值(默認值)

   variables_hash_max_size 512;

    #爲變量哈希表制定關鍵字欄的大小(默認64)

   variables_hash_bucket_size 128;

       

       #開啓gzip壓縮輸出

       gzip on;

       #最小壓縮文件大小

       gzip_min_length 1k;

       #壓縮緩衝區

       gzip_buffers     4 16k;

       #壓縮等級

       gzip_comp_level 9;

       #壓縮版本(默認1.1,前端若是是squid2.5請使用1.0)

       gzip_http_version 1.0;

       #壓縮類型,默認就已經包含textml

       gzip_types text/plain application/x-javascript application/json application/javascript text/css application/xml text/javascript image/gif image/png;

       gzip_vary on;

 

       #map模塊使用

       map_hash_max_size 102400;

       map_hash_bucket_size  256;

 

       #Tengine Config

       #concat on;

       #trim on;

       #trim_css off;

       #trim_js off;

       server_tokens off;

       #footer "<!-- $remote_addr $server_addr $upstream_addr -->";

 

       #rewrite_log on;

       fastcgi_intercept_errors on;

   #include other config file

       include ../conf.d/*.conf;

    #包含一些特殊站點的配置文件,此目錄下文件暫時不包含在git自動管理過程當中

   include ../special/*.conf;

 

    #屏蔽不加主機域名的默認請求

   #server {

       #   listen *:80 default;

       #   server_name _ "";

       #   return 444;

   #}

    

   #ceshi by dongange 2016-01-07

 

   #Nginx狀態監測模塊配置

    req_status_zone server "$server_name,$server_addr:$server_port" 10M;

   req_status server;

   server {

       listen 127.0.0.1:80;

       server_name 127.0.0.1;

       access_log /opt/log/nginx/nginx_status/status_access.log main;

           location /status {

                req_status_show;

                root /opt/nginx/www.root.com

                access_log /opt/log/nginx/nginx_status/status_access.log main;

                allow 127.0.0.1;

                deny all;

                }

           location /stub_status {

                stub_status on;

                access_log /opt/log/nginx/nginx_status_stub/status_stub_access.log main;

                allow 127.0.0.1;

                deny all;

           }

           location /check_status {

                check_status;

                access_log /opt/log/nginx/nginx_status_check/status_access_check.log main;

                allow 127.0.0.1;

                deny all;

           }

}

路徑配置方式

靜態動態分離,除了靜態資源之外的請求都交給Tomcat處理.

location / {  

   proxy_pass http://localhost:8080

}  

location ^~ /static/ {  

   root /webroot/static/;  

}  

location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {  

   root /webroot/res/;  

}

}

相關文章
相關標籤/搜索