nginx配置詳解

nginx你們都據說過吧,我就不詳細介紹了。我這裏就列一下,nginx中nginx.conf配置文件每一個配置項的詳細解釋。javascript

[plain] view plain copy css

  1. #運行用戶  html

  2. #user  nobody;  前端

  3.   

  4. #啓動進程,一般設置成和cpu的數量相等或者2倍於cpu的個數(具體結合cpu和內存)。默認爲1  java

  5. worker_processes  1;  node

  6.   

  7. #全局的錯誤日誌和日誌級別[ debug | info | notice | warn | error | crit ]  linux

  8. #error_log  logs/error.log;  nginx

  9. #error_log  logs/error.log  notice;  web

  10. #error_log  logs/error.log  info;  正則表達式

  11.   

  12. #pid進程文件  

  13. #pid        logs/nginx.pid;  

  14.   

  15. #一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(系統的值ulimit -n)  

  16. #與nginx進程數相除,可是nginx分配請求並不均勻,因此建議與ulimit -n的值保持一致。  

  17. #默認不需設置  

  18. #worker_rlimit_nofile 65535;  

  19.   

  20. #工做模式以及鏈接數上限  

  21. events {  

  22.     #epoll是多路複用IO(I/O Multiplexing)中的一種方式,  

  23.     #僅用於linux2.6以上內核,能夠大大的提升nginx的性能  

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

  25.     #在FreeBSD上面,就用kqueue模型  

  26.     #window下沒有epoll  

  27.     #use epoll;  

  28.       

  29.     #單個後臺worker process進程的最大併發鏈接數。默認爲1024  

  30.     #單個進程最大鏈接數(最大鏈接數=鏈接數*進程數)  

  31.     worker_connections  1024;  

  32.       

  33.     #併發總數是worker_processes和worker_connections的乘積  

  34.     #即 max_clients=worker_processes * worker_connections  

  35.     #在設置了反向代理的狀況下,max_clients=worker_processes * worker_connections / 4  

  36.     #worker_connections 值的設置跟物理內存大小有關  

  37.     #由於併發受IO約束,max_clients的值須小於系統能夠打開的最大文件數  

  38.     #而系統能夠打開的最大文件數和內存大小成正比,通常1GB內存的機器上能夠打開的文件數大約是10萬左右  

  39.     #咱們來看看360M內存的VPS能夠打開的文件句柄數是多少:  

  40.     #$ cat /proc/sys/fs/file-max  

  41.     #輸出 34336  

  42.     #32000 < 34336,即併發鏈接總數小於系統能夠打開的文件句柄總數,這樣就在操做系統能夠承受的範圍以內  

  43.     #因此,worker_connections 的值需根據 worker_processes 進程數目和系統能夠打開的最大文件總數進行適當地進行設置  

  44.     #使得併發總數小於操做系統能夠打開的最大文件數目  

  45.     #其實質也就是根據主機的物理CPU和內存進行配置  

  46.     #固然,理論上的併發總數可能會和實際有所誤差,由於主機還有其餘的工做進程須要消耗系統資源。  

  47.     #ulimit -SHn 65535  

  48. }  

  49.   

  50. #設定http服務器  

  51. http {  

  52.     #設定mime類型,類型由mime.type文件定義。文件擴展名與文件類型映射表  

  53.     include       mime.types;  

  54.       

  55.     ##默認文件類型  

  56.     default_type  application/octet-stream;  

  57.       

  58.     #默認編碼  

  59.     #charset utf-8;   

  60.       

  61.     #服務器名字的hash表大小  

  62.     #server_names_hash_bucket_size 128;   

  63.       

  64.     #上傳文件大小限制  

  65.     #client_header_buffer_size 32k;   

  66.       

  67.     #設定請求緩  

  68.     #large_client_header_buffers 4 64k;   

  69.       

  70.     #設定請求緩  

  71.     #client_max_body_size 8m;   

  72.       

  73.     #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,  

  74.     #對於普通應用設爲 on,若是用來進行下載等應用磁盤IO重負載應用,可設置爲off,  

  75.     #以平衡磁盤與網絡I/O處理速度,下降系統的負載。注意:若是圖片顯示不正常把這個改爲off。默認開啓狀態  

  76.     sendfile on;   

  77.       

  78.     #開啓目錄列表訪問,合適下載服務器,默認關閉。  

  79.     #autoindex on;   

  80.       

  81.     #防止網絡阻塞  

  82.     #tcp_nopush on;   

  83.       

  84.     #防止網絡阻塞  

  85.     #tcp_nodelay on;   

  86.       

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

  88.     #keepalive_timeout 120;   

  89.     keepalive_timeout  65;  

  90.       

  91.     #FastCGI相關參數是爲了改善網站的性能:減小資源佔用,提升訪問速度。下面參數看字面意思都能理解。  

  92.     #fastcgi_connect_timeout 300;  

  93.     #fastcgi_send_timeout 300;  

  94.     #fastcgi_read_timeout 300;  

  95.     #fastcgi_buffer_size 64k;  

  96.     #fastcgi_buffers 4 64k;  

  97.     #fastcgi_busy_buffers_size 128k;  

  98.     #fastcgi_temp_file_write_size 128k;  

  99.   

  100.     #gzip模塊設置  

  101.     #開啓gzip壓縮輸出  

  102.     #gzip on;   

  103.     #gzip_min_length 1k; #最小壓縮文件大小  

  104.     #gzip_buffers 4 16k; #壓縮緩衝區  

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

  106.     #gzip_comp_level 2; #壓縮等級  

  107.     #gzip_types text/plain application/x-javascript text/css application/xml;  

  108.     #壓縮類型,默認就已經包含text/html,因此下面就不用再寫了,寫上去也不會有問題,可是會有一個warn。  

  109.     #gzip_vary on;  

  110.       

  111.     #開啓限制IP鏈接數的時候須要使用  

  112.     #limit_zone crawler $binary_remote_addr 10m;   

  113.   

  114.     upstream www.xttblog.com {  

  115.         #upstream的負載均衡,weight是權重,能夠根據機器配置定義權重。weigth參數表示權值,權值越高被分配到的概率越大。  

  116.         #server 192.168.80.121:80 weight=3;  

  117.           

  118.         #每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器,能夠解決session的問題。  

  119.         ip_hash;  

  120.           

  121.         server 10.10.2.71:8080;  

  122.         #server 192.168.80.123:80 weight=3;  

  123.     }  

  124.       

  125.     #設定日誌格式  

  126.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  

  127.     #                  '$status $body_bytes_sent "$http_referer" '  

  128.     #                  '"$http_user_agent" "$http_x_forwarded_for"';  

  129.   

  130.     #access日誌文件的路徑,採用上面定義的main 格式記錄  

  131.     #access_log  logs/access.log  main;     

  132.   

  133.     #虛擬主機的配置  

  134.     server {  

  135.         #偵聽80端口  

  136.         listen       80;  

  137.           

  138.         #定義使用 localhost,能夠自定義域名訪問  

  139.         #域名能夠有多個,用空格隔開  

  140.         server_name  localhost;       

  141.   

  142.         #編碼  

  143.         #charset koi8-r;  

  144.   

  145.         #access_log  logs/host.access.log  main;  

  146.   

  147.         #默認請求  

  148.         location / {  

  149.             proxy_pass http://www.xttblog.com;  

  150.             proxy_redirect off;  

  151.             proxy_set_header X-Real-IP $remote_addr;  

  152.               

  153.             #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP  

  154.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  

  155.               

  156.             #如下是一些反向代理的配置,可選。  

  157.             proxy_set_header Host $host;  

  158.           

  159.             #定義服務器的默認網站根目錄位置  

  160.             root D:/apache-tomcat-6.0.41/webapps/test;  

  161.               

  162.             #定義首頁索引文件的名稱。定義多個用空格分隔  

  163.             index index.jsp;  

  164.         }  

  165.           

  166.         #定義404錯誤提示頁面  

  167.         #error_page  404              /404.html;  

  168.           

  169.         #定義50x錯誤提示頁面  

  170.         error_page   500 502 503 504  /50x.html;  

  171.         location = /50x.html {  

  172.             #定義服務器的默認網站錯誤頁面位置  

  173.             root   html;  

  174.         }  

  175.   

  176.         #靜態文件,nginx本身處理。正則表達式  

  177.         #location ~ ^/(p_w_picpaths|javascript|js|css|flash|media|static|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)/ {  

  178.             #過時30天,靜態文件不怎麼更新,過時能夠設大一點,  

  179.             #若是頻繁更新,則能夠設置得小一點。  

  180.             #expires 30d;  

  181.         #}  

  182.           

  183.         #禁止訪問 .htxxx 文件  

  184.         #location ~ /\.ht {  

  185.         #    deny  all;  

  186.         #}  

  187.           

  188.         #對 "/" 啓用反向代理  

  189.         #location / {  

  190.             #proxy_pass http://127.0.0.1:88;  

  191.             #proxy_redirect off;  

  192.             #proxy_set_header X-Real-IP $remote_addr;  

  193.               

  194.             #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP  

  195.             #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  

  196.               

  197.             #如下是一些反向代理的配置,可選。  

  198.             #proxy_set_header Host $host;  

  199.               

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

  201.             #client_max_body_size 10m;   

  202.               

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

  204.             #client_body_buffer_size 128k;   

  205.               

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

  207.             #proxy_connect_timeout 90;   

  208.               

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

  210.             #proxy_send_timeout 90;   

  211.               

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

  213.             #proxy_read_timeout 90;   

  214.               

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

  216.             #proxy_buffer_size 4k;   

  217.               

  218.             #proxy_buffers緩衝區,網頁平均在32k如下的設置  

  219.             #proxy_buffers 4 32k;   

  220.               

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

  222.             #proxy_busy_buffers_size 64k;   

  223.               

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

  225.             #proxy_temp_file_write_size 64k;  

  226.         #}  

  227.           

  228.         #設定查看Nginx狀態的地址  

  229.         #location /NginxStatus {  

  230.             #stub_status on;  

  231.             #access_log on;  

  232.             #auth_basic "NginxStatus";  

  233.             #auth_basic_user_file conf/htpasswd;  

  234.             #htpasswd文件的內容能夠用apache提供的htpasswd工具來產生。  

  235.         #}  

  236.           

  237.         #本地動靜分離反向代理配置  

  238.         #全部jsp的頁面均交由tomcat或resin處理  

  239.         #location ~ .(jsp|jspx|do)?$ {  

  240.             #proxy_set_header Host $host;  

  241.             #proxy_set_header X-Real-IP $remote_addr;  

  242.             #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  

  243.             #proxy_pass http://127.0.0.1:8080;  

  244.         #}  

  245.           

  246.     }  

  247.   

  248.   

  249.     #另外一個虛擬主機使用混合的IP的配置  

  250.     #server {  

  251.     #    listen       8000;  

  252.     #    listen       somename:8080;  

  253.     #    server_name  somename  alias  another.alias;  

  254.   

  255.     #    location / {  

  256.     #        root   html;  

  257.     #        index  index.html index.htm;  

  258.     #    }  

  259.     #}  

  260.   

  261.   

  262.     #HTTPS server的配置,默認不開啓  

  263.     #server {  

  264.     #    listen       443 ssl;  

  265.     #    server_name  localhost;  

  266.   

  267.     #    ssl_certificate      cert.pem;  

  268.     #    ssl_certificate_key  cert.key;  

  269.   

  270.     #    ssl_session_cache    shared:SSL:1m;  

  271.     #    ssl_session_timeout  5m;  

  272.   

  273.     #    ssl_ciphers  HIGH:!aNULL:!MD5;  

  274.     #    ssl_prefer_server_ciphers  on;  

  275.   

  276.     #    location / {  

  277.     #        root   html;  

  278.     #        index  index.html index.htm;  

  279.     #    }  

  280.     #}  

  281.   

  282. }  

相關文章
相關標籤/搜索