Nginx配置文件詳解

  1 #運行用戶
  2 user nobody;
  3 #啓動進程,一般設置成和cpu的數量相等
  4 worker_processes  1;
  5 
  6 #全局錯誤日誌及PID文件
  7 #error_log  logs/error.log;
  8 #error_log  logs/error.log  notice;
  9 #error_log  logs/error.log  info;
 10 
 11 #pid        logs/nginx.pid;
 12 
 13 #工做模式及鏈接數上限
 14 events {
 15     #epoll是多路複用IO(I/O Multiplexing)中的一種方式,
 16     #僅用於linux2.6以上內核,能夠大大提升nginx的性能
 17     use   epoll; 
 18 
 19     #單個後臺worker process進程的最大併發連接數    
 20     worker_connections  1024;
 21 
 22     # 併發總數是 worker_processes 和 worker_connections 的乘積
 23     # 即 max_clients = worker_processes * worker_connections
 24     # 在設置了反向代理的狀況下,max_clients = worker_processes * worker_connections / 4  爲何
 25     # 爲何上面反向代理要除以4,應該說是一個經驗值
 26     # 根據以上條件,正常狀況下的Nginx Server能夠應付的最大鏈接數爲:4 * 8000 = 32000
 27     # worker_connections 值的設置跟物理內存大小有關
 28     # 由於併發受IO約束,max_clients的值須小於系統能夠打開的最大文件數
 29     # 而系統能夠打開的最大文件數和內存大小成正比,通常1GB內存的機器上能夠打開的文件數大約是10萬左右
 30     # 咱們來看看360M內存的VPS能夠打開的文件句柄數是多少:
 31     # $ cat /proc/sys/fs/file-max
 32     # 輸出 34336
 33     # 32000 < 34336,即併發鏈接總數小於系統能夠打開的文件句柄總數,這樣就在操做系統能夠承受的範圍以內
 34     # 因此,worker_connections 的值需根據 worker_processes 進程數目和系統能夠打開的最大文件總數進行適當地進行設置
 35     # 使得併發總數小於操做系統能夠打開的最大文件數目
 36     # 其實質也就是根據主機的物理CPU和內存進行配置
 37     # 固然,理論上的併發總數可能會和實際有所誤差,由於主機還有其餘的工做進程須要消耗系統資源。
 38     # ulimit -SHn 65535
 39 
 40 }
 41 
 42 
 43 http {
 44     #設定mime類型,類型由mime.type文件定義
 45     include    mime.types;
 46     default_type  application/octet-stream;
 47     #設定日誌格式
 48     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 49                       '$status $body_bytes_sent "$http_referer" '
 50                       '"$http_user_agent" "$http_x_forwarded_for"';
 51 
 52     access_log  logs/access.log  main;
 53 
 54     #sendfile 指令指定 nginx 是否調用 sendfile 函數(zero copy 方式)來輸出文件,
 55     #對於普通應用,必須設爲 on,
 56     #若是用來進行下載等應用磁盤IO重負載應用,可設置爲 off,
 57     #以平衡磁盤與網絡I/O處理速度,下降系統的uptime.
 58     sendfile     on;
 59     #tcp_nopush     on;
 60 
 61     #鏈接超時時間
 62     #keepalive_timeout  0;
 63     keepalive_timeout  65;
 64     tcp_nodelay     on;
 65 
 66     #開啓gzip壓縮
 67     gzip  on;
 68     gzip_disable "MSIE [1-6].";
 69 
 70     #設定請求緩衝
 71     client_header_buffer_size    128k;
 72     large_client_header_buffers  4 128k;
 73 
 74 
 75     #設定虛擬主機配置
 76     server {
 77         #偵聽80端口
 78         listen    80;
 79         #定義使用 www.nginx.cn訪問
 80         server_name  www.nginx.cn;
 81 
 82         #定義服務器的默認網站根目錄位置
 83         root html;
 84 
 85         #設定本虛擬主機的訪問日誌
 86         access_log  logs/nginx.access.log  main;
 87 
 88         #默認請求
 89         location / {
 90             
 91             #定義首頁索引文件的名稱
 92             index index.php index.html index.htm;   
 93 
 94         }
 95 
 96         # 定義錯誤提示頁面
 97         error_page   500 502 503 504 /50x.html;
 98         location = /50x.html {
 99         }
100 
101         #靜態文件,nginx本身處理
102         location ~ ^/(images|javascript|js|css|flash|media|static)/ {
103             
104             #過時30天,靜態文件不怎麼更新,過時能夠設大一點,
105             #若是頻繁更新,則能夠設置得小一點。
106             expires 30d;
107         }
108 
109         #PHP 腳本請求所有轉發到 FastCGI處理. 使用FastCGI默認配置.
110         location ~ .php$ {
111             fastcgi_pass 127.0.0.1:9000;
112             fastcgi_index index.php;
113             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
114             include fastcgi_params;
115         }
116 
117         #禁止訪問 .htxxx 文件
118             location ~ /.ht {
119             deny all;
120         }
121 
122     }
123 }

Nginx反向代理配置:javascript

  在http節點下,添加upstream節點,添加tomcat集羣php

upstream tomcatscss

  {html

    server 127.0.0.1:9001 down;java

    server 127.0.0.1:9002 backup;node

    server 127.0.0.1:9003 weight=2;linux

    server 127.0.0.1:9004 max_fails=2 fail_timeout=60s;nginx

  }後端

 

  upstream還能夠爲每一個設備設置狀態值,這些狀態值的含義分別以下:tomcat

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

 

 

none(輪詢)

upstream按照輪詢(默認)方式進行負載,每一個請求按時間順序逐一分配到不一樣的後端服務器,若是後端服務器down掉,能自動剔除。雖然這種方式簡便、成本低廉。但缺點是:可靠性低和負載分配不均衡。

weight(權重)

 

server {

  listen 8080;

  server_name localhost;

  location / {

    proxy_pass_header Server;

    proxy_set_header Host $http_host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Scheme $scheme;

    proxy_pass http://tomcats;

  }

}

 這樣咱們訪問localhost:8080時就會跳轉到tomcats對應的服務器中了

 

轉自: http://www.nginx.cn/76.html

相關文章
相關標籤/搜索