nginx服務器配置說明

 

總結nginx的一些配置選項:javascript

nginx全局配置文件 
# 定義nginx運行的用戶和組//一個默認同時爲用戶和組 //沒有則默認爲nobody
user www-data;
# nginx進程數,建議設置爲cpu核心數量,或者爲核心總數的2倍//默認auto則和核心數量相等
worker_processes auto;
# nginx的進程文件
pid /run/nginx.pid;
#一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(系統的值ulimit -n)與nginx進程數相除,可是nginx分配請求並不均勻,因此建議與ulimit -n的值保持一致。
worker_rlimit_nofile 65535;
 
 

# 工做模式與鏈接數量上限
events {
  #參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型,若是跑在FreeBSD上面,就用kqueue模型。
    (值得注意的是若是你不知道Nginx該使用哪一種輪詢方法的話,它會選擇一個最適合你操做系統的)   use epoll;   #單個進程最大鏈接數(最大鏈接數=鏈接數*進程數)   worker_connections 768;   #告訴nginx收到一個新鏈接通知後接受盡量多的鏈接。
  multi_accept on; }


# 設定http服務器
http {

  #開啓目錄列表訪問,適合下載服務器,默認關閉。
  autoindex on;
  #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,對於普通應用設爲
  on,若是用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡I/O處理速度,
  下降系統的負載。注意:若是圖片顯示不正常把這個改爲off。
  sendfile on;
 
 

  # 防止網絡阻塞
  tcp_nopush on;
  # 防止網絡阻塞
  tcp_nodelay on;
  # http長鏈接超時時間,單位爲秒
  keepalive_timeout 65;


  #設置客戶端請求讀取超時時間
  client_header_timeout 10;
  #設置客戶端請求主體讀取超時時間
  client_body_timeout 10;
  # 客戶端請求頭部的緩衝區大小。這個能夠根據你的系統分頁大小來設置,通常一個請求頭的大小不會超過1k,不過因爲通常系統分頁都要大於1k,因此這裏設置爲分頁大小。分頁大小能夠用命令getconf PAGESIZE 取得。
  client_header_buffer_size 4k;
  #用於設置相應客戶端的超時時間
  send_timeout 10


  # 這個將爲打開文件指定緩存,默認是沒有啓用的,max指定緩存數量,建議和打開文件數一致,inactive是指通過多長時間文件沒被請求後刪除緩存。
  open_file_cache max=65535 inactive=60s;
  # 這個是指多長時間檢查一次緩存的有效信息。
  open_file_cache_valid 80s; 
  # 語法:open_file_cache_min_uses number 默認值:open_file_cache_min_uses 1 使用字段:http, server, location 這個指令指定了在open_file_cache指令無效的參數中必定的時間範圍內可使用的最小文件數,若是使用更大的值,文件描述符在cache中老是打開狀態
  open_file_cache_min_uses 1;
  # 語法:open_file_cache_errors on | off 默認值:open_file_cache_errors off 使用字段:http, server, location 這個指令指定是否在搜索一個文件是記錄cache錯誤.
  open_file_cache_errors;


  # proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區
  proxy_temp_path /data0/proxy_temp_dir;
  # 設置內存緩存空間大小爲200MB,1天沒有被訪問的內容自動清除,硬盤緩存空間大小爲30GB。
  proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
  types_hash_max_size 2048;
  
  # 並不會讓nginx執行的速度更快,但它能夠關閉在錯誤頁面中的nginx版本數字,這樣對於安全性是有好處的。
  server_tokens;
  server_tokens off;

 

  server_names_hash_bucket_size 64;
  server_name_in_redirect off;


  # 文件擴展名與文件類型映射表
  include /etc/nginx/mime.types;
  # 默認文件類型
  default_type application/octet-stream;

 
 

  # SSL Settings
  # Dropping SSLv3, ref: POODLE
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   
  ssl_prefer_server_ciphers on;
  ssl on;
  ssl_certificate /etc/nginx/cert_server/server.crt;
  ssl_certificate_key /etc/nginx/cert_server/server.key;php



  # Logging Settings

  #access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  # Gzip Settings 
  #開啓gzip壓縮輸出
  gzip on;
  gzip_disable "msie6";
  # gzip_proxied any;
  #壓縮等級
  # gzip_comp_level 6;
  #壓縮緩衝區
  # gzip_buffers 16 8k;
  #壓縮版本(默認1.1,前端若是是squid2.5請使用1.0)
  # gzip_http_version 1.1;
  #壓縮類型,默認就已經包含text/html,因此下面就不用再寫了,寫上去也不會有問題,可是會有一個warn。
  # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  #最小壓縮文件大小
  gzip_min_length 1k;
  #開啓限制IP鏈接數的時候須要使用
  #limit_zone crawler $binary_remote_addr 10m;


  # upstream 負載均衡 

  upstream bakend {

    server 127.0.0.1:8027;

    server 127.0.0.1:8028;

    server 127.0.0.1:8029;

    hash $request_uri;

  }

  nginx的upstream目前支持4種方式的分配

  一、輪詢(默認)

  每一個請求按時間順序逐一分配到不一樣的後端服務器,若是後端服務器down掉,能自動剔除。

  二、weight
  指定輪詢概率,weight和訪問比率成正比,用於後端服務器性能不均的狀況。
  例如:
  upstream bakend {
    server 192.168.0.14 weight=10;
    server 192.168.0.15 weight=10;
  }

  二、ip_hash
  每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器,能夠解決session的問題。
  例如:
  upstream bakend {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
  }

  三、fair(第三方)
  按後端服務器的響應時間來分配請求,響應時間短的優先分配。
  upstream backend {
    server server1;
    server server2;
    fair;
  }

  四、url_hash(第三方)

  按訪問url的hash結果來分配請求,使每一個url定向到同一個後端服務器,後端服務器爲緩存時比較有效。

  例:在upstream中加入hash語句,server語句中不能寫入weight等其餘的參數,hash_method是使用的hash算法

  upstream backend {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
  }

  tips:

  upstream bakend{#定義負載均衡設備的Ip及設備狀態}{
  ip_hash;
  server 127.0.0.1:9090 down;
  server 127.0.0.1:8080 weight=2;
  server 127.0.0.1:6060;
  server 127.0.0.1:7070 backup;
  }
  在須要使用負載均衡的server中增長
  proxy_pass http://bakend/;

  每一個設備的狀態設置爲:
  1.down表示單前的server暫時不參與負載
  2.weight爲weight越大,負載的權重就越大。
  3.max_fails:容許請求失敗的次數默認爲1.當超過最大次數時,返回proxy_next_upstream模塊定義的錯誤
  4.fail_timeout:max_fails次失敗後,暫停的時間。
  5.backup: 其它全部的非backup機器down或者忙的時候,請求backup機器。因此這臺機器壓力會最輕。

  nginx支持同時設置多組的負載均衡,用來給不用的server來使用。

  client_body_in_file_only設置爲On 能夠講client post過來的數據記錄到文件中用來作debug
  client_body_temp_path設置記錄文件的目錄 能夠設置最多3層目錄

  location對URL進行匹配.能夠進行重定向或者進行新的代理 負載均衡


  #虛擬主機的配置
  server{
    #監聽端口     listen 80;
    #域名能夠有多個,用空格隔開
    server_name www.ha97.com ha97.com;
    index index.html index.htm index.php;     root /data/www/ha97;     location ~ .*\.(php|php5)?${       fastcgi_pass 127.0.0.1:9000;       fastcgi_index index.php;       include fastcgi.conf;     }
    #圖片緩存時間設置     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${       expires 10d;     }     #JS和CSS緩存時間設置     location ~ .*\.(js|css)?${       expires 1h;     }
    #日誌格式設定     log_format access '$remote_addr - $remote_user [$time_local] "$request" '     '$status $body_bytes_sent "$http_referer" '     '"$http_user_agent" $http_x_forwarded_for';     #定義本虛擬主機的訪問日誌     access_log /var/log/nginx/ha97access.log access;     #對 "/" 啓用反向代理
    location / {       proxy_pass http://127.0.0.1:88;       proxy_redirect off;

      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Real-IP $remote_addr;       #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       #如下是一些反向代理的配置,可選。       proxy_set_header Host $host;
      client_max_body_size 10m; #容許客戶端請求的最大單文件字節數       client_body_buffer_size 128k; #緩衝區代理緩衝用戶端請求的最大字節數,       proxy_connect_timeout 90; #nginx跟後端服務器鏈接超時時間(代理鏈接超時)       proxy_send_timeout 90; #後端服務器數據回傳時間(代理髮送超時)       proxy_read_timeout 90; #鏈接成功後,後端服務器響應時間(代理接收超時)       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服務器傳     }     #設定查看Nginx狀態的地址     location /NginxStatus {       stub_status on;       access_log on;       auth_basic "NginxStatus";       auth_basic_user_file conf/htpasswd;       #htpasswd文件的內容能夠用apache提供的htpasswd工具來產生。     }     #本地動靜分離反向代理配置     #全部jsp的頁面均交由tomcat或resin處理     location ~ .(jsp|jspx|do)?$ {       proxy_set_header Host $host;       proxy_set_header X-Real-IP $remote_addr;       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_pass http://127.0.0.1:8080;
    }

    #全部靜態文件由nginx直接讀取不通過tomcat或resin     location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${
      expires 15d;
    }
    location ~ .*.(js|css)?${
      expires 1h;
    }   }


  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}
 
 
 #mail { # # See sample authentication script at: # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # # auth_http localhost/auth.php; # # pop3_capabilities "TOP" "USER"; # # imap_capabilities "IMAP4rev1" "UIDPLUS"; # # server { # listen localhost:110; # protocol pop3; # proxy on; # } # # server { # listen localhost:143; # protocol imap; # proxy on; # } #}
相關文章
相關標籤/搜索