nginx配置詳解

nyyb 9年前發布 | 12K 次閱讀 Web服務器 Nginx

nginx大家都聽說過吧,我就不詳細介紹了。我這里就列一下,nginx中nginx.conf配置文件每個配置項的詳細解釋。

    #運行用戶

#user  nobody;  

#啟動進程,通常設置成和cpu的數量相等或者2倍于cpu的個數(具體結合cpu和內存)。默認為1  
worker_processes  1;  

#全局的錯誤日志和日志級別[ debug | info | notice | warn | error | crit ]  
#error_log  logs/error.log;  
#error_log  logs/error.log  notice;  
#error_log  logs/error.log  info;  

#pid進程文件  
#pid        logs/nginx.pid;  

#一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(系統的值ulimit -n)  
#與nginx進程數相除,但是nginx分配請求并不均勻,所以建議與ulimit -n的值保持一致。  
#默認不需設置  
#worker_rlimit_nofile 65535;  

#工作模式以及連接數上限  
events {  
    #epoll是多路復用IO(I/O Multiplexing)中的一種方式,  
    #僅用于linux2.6以上內核,可以大大的提高nginx的性能  
    #參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];  
    #在FreeBSD上面,就用kqueue模型  
    #window下沒有epoll  
    #use epoll;  

    #單個后臺worker process進程的最大并發連接數。默認為1024  
    #單個進程最大連接數(最大連接數=連接數*進程數)  
    worker_connections  1024;  

    #并發總數是worker_processes和worker_connections的乘積  
    #即 max_clients=worker_processes * worker_connections  
    #在設置了反向代理的情況下,max_clients=worker_processes * worker_connections / 4  
    #worker_connections 值的設置跟物理內存大小有關  
    #因為并發受IO約束,max_clients的值須小于系統可以打開的最大文件數  
    #而系統可以打開的最大文件數和內存大小成正比,一般1GB內存的機器上可以打開的文件數大約是10萬左右  
    #我們來看看360M內存的VPS可以打開的文件句柄數是多少:  
    #$ cat /proc/sys/fs/file-max  
    #輸出 34336  
    #32000 < 34336,即并發連接總數小于系統可以打開的文件句柄總數,這樣就在操作系統可以承受的范圍之內  
    #所以,worker_connections 的值需根據 worker_processes 進程數目和系統可以打開的最大文件總數進行適當地進行設置  
    #使得并發總數小于操作系統可以打開的最大文件數目  
    #其實質也就是根據主機的物理CPU和內存進行配置  
    #當然,理論上的并發總數可能會和實際有所偏差,因為主機還有其他的工作進程需要消耗系統資源。  
    #ulimit -SHn 65535  
}  

#設定http服務器  
http {  
    #設定mime類型,類型由mime.type文件定義。文件擴展名與文件類型映射表  
    include       mime.types;  

    ##默認文件類型  
    default_type  application/octet-stream;  

    #默認編碼  
    #charset utf-8;   

    #服務器名字的hash表大小  
    #server_names_hash_bucket_size 128;   

    #上傳文件大小限制  
    #client_header_buffer_size 32k;   

    #設定請求緩  
    #large_client_header_buffers 4 64k;   

    #設定請求緩  
    #client_max_body_size 8m;   

    #開啟高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,  
    #對于普通應用設為 on,如果用來進行下載等應用磁盤IO重負載應用,可設置為off,  
    #以平衡磁盤與網絡I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。默認開啟狀態  
    sendfile on;   

    #開啟目錄列表訪問,合適下載服務器,默認關閉。  
    #autoindex on;   

    #防止網絡阻塞  
    #tcp_nopush on;   

    #防止網絡阻塞  
    #tcp_nodelay on;   

    #長連接超時時間,單位是秒  
    #keepalive_timeout 120;   
    keepalive_timeout  65;  

    #FastCGI相關參數是為了改善網站的性能:減少資源占用,提高訪問速度。下面參數看字面意思都能理解。  
    #fastcgi_connect_timeout 300;  
    #fastcgi_send_timeout 300;  
    #fastcgi_read_timeout 300;  
    #fastcgi_buffer_size 64k;  
    #fastcgi_buffers 4 64k;  
    #fastcgi_busy_buffers_size 128k;  
    #fastcgi_temp_file_write_size 128k;  

    #gzip模塊設置  
    #開啟gzip壓縮輸出  
    #gzip on;   
    #gzip_min_length 1k; #最小壓縮文件大小  
    #gzip_buffers 4 16k; #壓縮緩沖區  
    #gzip_http_version 1.0; #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)  
    #gzip_comp_level 2; #壓縮等級  
    #gzip_types text/plain application/x-javascript text/css application/xml;  
    #壓縮類型,默認就已經包含text/html,所以下面就不用再寫了,寫上去也不會有問題,但是會有一個warn。  
    #gzip_vary on;  

    #開啟限制IP連接數的時候需要使用  
    #limit_zone crawler $binary_remote_addr 10m;   

    upstream www.xttblog.com {  
        #upstream的負載均衡,weight是權重,可以根據機器配置定義權重。weigth參數表示權值,權值越高被分配到的幾率越大。  
        #server 192.168.80.121:80 weight=3;  

        #每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。  
        ip_hash;  

        server 10.10.2.71:8080;  
        #server 192.168.80.123:80 weight=3;  
    }  

    #設定日志格式  
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
    #                  '$status $body_bytes_sent "$http_referer" '  
    #                  '"$http_user_agent" "$http_x_forwarded_for"';  

    #access日志文件的路徑,采用上面定義的main 格式記錄  
    #access_log  logs/access.log  main;     

    #虛擬主機的配置  
    server {  
        #偵聽80端口  
        listen       80;  

        #定義使用 localhost,可以自定義域名訪問  
        #域名可以有多個,用空格隔開  
        server_name  localhost;       

        #編碼  
        #charset koi8-r;  

        #access_log  logs/host.access.log  main;  

        #默認請求  
        location / {  
            proxy_pass http://www.xttblog.com;  
            proxy_redirect off;  
            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;  

            #定義服務器的默認網站根目錄位置  
            root D:/apache-tomcat-6.0.41/webapps/test;  

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

        #定義404錯誤提示頁面  
        #error_page  404              /404.html;  

        #定義50x錯誤提示頁面  
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            #定義服務器的默認網站錯誤頁面位置  
            root   html;  
        }  

        #靜態文件,nginx自己處理。正則表達式  
        #location ~ ^/(images|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)/ {  
            #過期30天,靜態文件不怎么更新,過期可以設大一點,  
            #如果頻繁更新,則可以設置得小一點。  
            #expires 30d;  
        #}  

        #禁止訪問 .htxxx 文件  
        #location ~ /\.ht {  
        #    deny  all;  
        #}  

        #對 "/" 啟用反向代理  
        #location / {  
            #proxy_pass http://127.0.0.1:88;  
            #proxy_redirect off;  
            #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;   

            #nginx跟后端服務器連接超時時間(代理連接超時)  
            #proxy_connect_timeout 90;   

            #后端服務器數據回傳時間(代理發送超時)  
            #proxy_send_timeout 90;   

            #連接成功后,后端服務器響應時間(代理接收超時)  
            #proxy_read_timeout 90;   

            #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小  
            #proxy_buffer_size 4k;   

            #proxy_buffers緩沖區,網頁平均在32k以下的設置  
            #proxy_buffers 4 32k;   

            #高負荷下緩沖大小(proxy_buffers*2)  
            #proxy_busy_buffers_size 64k;   

            #設定緩存文件夾大小,大于這個值,將從upstream服務器傳  
            #proxy_temp_file_write_size 64k;  
        #}  

        #設定查看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;  
        #}  

    }  


    #另一個虛擬主機使用混合的IP的配置  
    #server {  
    #    listen       8000;  
    #    listen       somename:8080;  
    #    server_name  somename  alias  another.alias;  

    #    location / {  
    #        root   html;  
    #        index  index.html index.htm;  
    #    }  
    #}  


    #HTTPS server的配置,默認不開啟  
    #server {  
    #    listen       443 ssl;  
    #    server_name  localhost;  

    #    ssl_certificate      cert.pem;  
    #    ssl_certificate_key  cert.key;  

    #    ssl_session_cache    shared:SSL:1m;  
    #    ssl_session_timeout  5m;  

    #    ssl_ciphers  HIGH:!aNULL:!MD5;  
    #    ssl_prefer_server_ciphers  on;  

    #    location / {  
    #        root   html;  
    #        index  index.html index.htm;  
    #    }  
    #}  

}  </pre><br />
 本文由用戶 nyyb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!