nginx配置文件及說明

# nginx在安裝完成後,大部分參數就已是最優化了,咱們須要管理的東西並很少
#user  nobody;
#進程數,建議小於或者是等於CPU總核心數
#建議值 <= cpu核心數量,通常高於cpu數量不會帶好處,也許還有進程切換開銷的負面影響
worker_processes  2;javascript

# 只記錄更爲嚴重的錯誤日誌,可減小IO壓力, 目前日誌記錄級別是warn  日誌級別:debug | info | notice | warn | error | crit | alert | emerg
#彷佛這樣子配置錯誤級別了可是有時候仍是會打印出warn級別錯誤的,無論了
error_log  logs/error.log  error;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;php

pid        logs/nginx.pid;css

# 每進程最大可打開文件描述符數量(linux上文件描述符比較廣義,網絡端口、設備、磁盤文件都是)
# 文件描述符用完了,新的鏈接會被拒絕,產生502類錯誤
# linux最大可打開文件數可經過ulimit -n FILECNT或 /etc/security/limits.conf配置
# 理論值 系統最大數量 / 進程數。但進程間工做量並非平均分配的,因此能夠設置的大一些
#worker_rlimit_nofile 655350 html


# event指令與事件模型有關,配置處理鏈接有關信息
events {
    #單個進程最大鏈接數
    # 併發響應能力的關鍵配置值
    # 每一個進程容許的最大同時鏈接數,work_connectins * worker_processes = maxConnection;
    # 要注意maxConnections不等同於可響應的用戶數量,
    # 由於通常一個瀏覽器會同時開兩條鏈接,若是反向代理,nginx到後端服務器的鏈接也要佔用鏈接數
    # 因此,作靜態服務器時,通常 maxClient = work_connectins * worker_processes / 2
    # 作反向代理服務器時 maxClient = work_connectins * worker_processes / 4
    
    # 這個值理論上越大越好,但最多可承受多少請求與配件和網絡相關,也可最大可打開文件,最大可用sockets數量(約64K)有關
    worker_connections  2048;
}java

# http指令處理http請求
http {
    # mime type映射
    include       mime.types;
    #默認文件類型
    default_type  application/octet-stream;node

    #nginx日誌格式的配置 若是有combined就是默認的意思,這裏main就是主要的意思
    #'$remote_addr - $remote_user [$time_local] "$request" ' 用戶地址ip地址--用戶名  請求的URL,請求路徑 
    #$status請求狀態    $body_bytes_sent響應給用戶的數據的大小   $http_referer" 原網頁,指用戶從那裏來,好比從百度搜索點擊連接而來
    #$http_user_agent是用戶的瀏覽器的信息   $http_x_forwarded_for客戶端的IP地址與remote_addr意思差很少
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';linux

    #後面的mian得對應上面log_formate main 這裏的main這個單詞,這裏是主配置文件的意思,也能夠改成combined默認的意思
    #access_log  logs/access.log  main;
    # 關閉此項可減小IO開銷,但也沒法記錄訪問信息,不利用業務分析,通常運維狀況不建議使用,
    #若是不須要查看訪問日誌必須設置爲0ff由於若是不設置爲off那麼它會自動打印的,註釋了都沒有用的
    #access_log off;
    
    #不能夠在這裏配置錯誤日誌,在前面配置
    #error_log logs/error.log warn;
    
    
    #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,對於普通應用設爲 on,
    #若是用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡I/O處理速度,下降系統的負載。
    #注意:若是圖片顯示不正常把這個改爲off。
    # 啓用內核複製模式,應該保持開啓達到最快IO效率
    sendfile   on;
   
    
    # 簡單說,啓動以下兩項配置,會在數據包達到必定大小後再發送數據
    # 這樣會減小網絡通訊次數,下降阻塞機率,但也會影響響應及時性
    # 比較適合於文件下載這類的大數據包通訊場景
    #tcp_nodelay on|off on禁用Nagle算法 
    #防止網絡阻塞
    tcp_nopush     on; 
     #防止網絡阻塞
    #tcp_nodelay on;
    
    # HTTP1.1支持持久鏈接alive
    # 下降每一個鏈接的alive時間可在必定程度上提升可響應鏈接數量,因此通常可適當下降此值
    #長鏈接超時時間,單位是秒
    keepalive_timeout  50s; 
    
    #最大上傳的大小是500M
    #client_max_body_size 500m; 
    
    
    #默認狀況下,Nginx的gzip壓縮是關閉的, gzip壓縮功能就是可讓你節省很多帶寬,可是會增長服務器CPU的開銷哦
    #若是開啓了反向代理,那麼須要注意了,反向代理時候若是配置了壓縮那麼會卡死的
    #開啓壓縮   
    gzip  on; 
    
    #爲指定的客戶端禁用gzip功能,IE6或者更低版本禁用,IE6不支持壓縮,爲了兼容性
    gzip_disable "msie6"; 
    
    #判斷客戶端是否支持gzip壓縮,若是不支持就不開啓壓縮
    #gzip_vary on;
    
    #gzip壓縮用於http1.1協議
    #gzip_http_version 1.1;
    
    #gzip_static 告訴nginx在壓縮資源以前,先查找是否有預先gzip處理過的資源。
    #這要求你預先壓縮你的文件(在這個例子中被註釋掉了),
    #從而容許你使用最高壓縮比,這樣nginx就不用再壓縮這些文件了
    # gzip_static on; 
    
    #默認值: gzip_buffers 4 4k/8k
    #做用域: http, server, location
    #設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流。 例如 4 4k 表明以4k爲單位,按照原始數據大小以4k爲單位的4倍申請內存。
    # 4 8k 表明以8k爲單位,按照原始數據大小以8k爲單位的4倍申請內存。
    #若是沒有設置,默認值是申請跟原始數據相同大小的內存空間去存儲gzip壓縮結果
    gzip_buffers 4 16k;
    
    #Nginx做爲反向代理的時候啓用,開啓或者關閉後端服務器返回的結果,匹配的前提是後端服務器必需要返回包含」Via」的 header頭。
    #容許或者禁止壓縮基於請求和響應的響應流。咱們設置爲any,意味着將會壓縮全部的請求
    #off 代理不壓縮,默認設置是off,可是測試的時候發現這個配置不起做用,仍是壓縮了  若是代理服務器已經將對應的文件壓縮了,那麼這裏不會對其再次壓縮的,若是沒有壓縮,則會壓縮
    #gzip_proxied off; 
    
    #設置對數據啓用壓縮的最少字節數。若是一個請求小於1000字節,咱們最好不要壓縮它,由於壓縮這些小的數據會下降處理此請求的全部進程的速度。
    # 太短的內容壓縮效果不佳,壓縮過程還會浪費系統資源
    gzip_min_length 1024;
    
    #設置數據的壓縮等級。這個等級能夠是1-9之間的任意數值,9是最慢可是壓縮比最大的。咱們設置爲4,這是一個比較折中的設置
    gzip_comp_level 6;
    
    #設置須要壓縮的數據格式。下面例子中已經有一些了,你也能夠再添加更多的格式。設置哪壓縮種文本文件可參考 conf/mime.types   text/html無效了
    gzip_types  application/javascript text/plain text/css application/json application/x-javascript application/xml application/xml+rss text/javascript image/jpeg image/gif image/png; 
    
    
    #配置緩存
    #用proxy_cache_path指令,咱們首先應該已經定義在文件系統中但願存儲緩存的目錄。
    #levels=參數指定緩存將如何組織
    #keys_zone=參數定義緩存區域的名字,咱們稱之爲backcache。將會使用一塊最大10M的共享內存,用於硬盤上的文件索引,包括文件名和請求次數
    #咱們是存儲10 MB的key。對於每兆字節,Nginx可存儲8000左右的條目。
    #MAX_SIZE參數設置實際緩存數據的最大尺寸。
    #inactive=1d 每一個文件在1天內若不活躍(無請求)則從硬盤上淘汰  同時須要在nginx下建立一個cache的文件夾
    proxy_cache_path D:/nginx/other_nginx/nginx/nginx-1.9.5_using/cache levels=1:2 keys_zone=backcache:10m inactive=1d  max_size=500m;nginx

    #proxy_cache_key。這個設置將設置用於存儲緩存值的鍵。此鍵用於檢查是否一個請求能夠從高速緩存提供服務
    proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
    
    #proxy_cache_valid指令能夠被指定屢次。它依賴於狀態代碼值使咱們可以配置多長時間存儲。
    #在咱們的例子中,咱們對於後端返回200和302存儲1天,404響應的一分鐘過時
    proxy_cache_valid 200 302 1d;web

    proxy_cache_valid 404 1m;
    
    
    
    
    
    
    # 靜態文件緩存,打開文件的緩存
    # 最大緩存數量,文件未使用存活期
    #建議和打開文件數量一致, inactive是指通過多長時間文件沒被請求後刪除緩存
    #這個將爲打開文件指定緩存,默認沒有啓用,max指定緩存數量,
    open_file_cache max=100000 inactive=20s; 
    
    # 驗證緩存有效期時間間隔
     #這個是指多長時間檢查一次緩存的有效信息
    open_file_cache_valid 30s;
    
    # 有效期內文件最少使用次數
    #定義了open_file_cache中指令參數不活動時間期間裏最小的文件數
    open_file_cache_min_uses 2; 
    
    #指定了當搜索一個文件時是否緩存錯誤信息,也包括再次給配置中添加文件。咱們也包括了服務器模塊,
    #這些是在不一樣文件中定義的。若是你的服務器模塊不在這些位置,你就得修改這一行來指定正確的位置
    open_file_cache_errors on; 
    
    
    upstream localhosting {
        server localhost:8080 weight=5;     
        #server www.waterme.net:8080 weight=5;
        #server www.waterme.cn:8222 weight=5; 
        
        #沒事仍是加上ip_hash吧,否則有時候nginx會卡死的
        ip_hash;
    }
    
    server {
         # 監聽端口
        listen       80;
        # 識別的域名
        server_name  localhost;
      算法

        charset utf-8;

        #access_log  logs/host.access.log  main;
        
        
        #全部靜態文件由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 ~.*\.(png)$ {
        #引用緩存,這裏只是對遠程的代理用的,並且能夠用,意思就是第一次訪問的時候沒有緩存就範圍遠程的服務器,以後就有了緩存,下次訪問請求的時候,就不會訪問遠程服務器了,直接使用緩存裏面的內容
        #使用proxy_cache指令,就能夠指定該backcache緩存區被用於這個位置。
        proxy_cache backcache;

        #proxy_cache_bypass指令被設置爲$ http_cache_control變量。
        #這將包含一個指示器,用以指示該客戶端是否被明確地請求一個最新的,非緩存版本。
        #設置此指令容許Nginx正確處理這些類型的客戶端請求。無需進行進一步的配置。
        proxy_cache_bypass $http_cache_control;
        
        #X-Proxy-Cache的額外頭。咱們設置這個頭部爲$ upstream_cache_status變量的值。
        #這個設置頭,使咱們可以看到,若是請求致使高速緩存命中,高速緩存未命中,或者高速緩存被明確旁路。
        #這是對於調試特別有價值,也對客戶端是有用的信息。
        add_header X-Proxy-Cache $upstream_cache_status;
        
        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://localhost:8080;  
        
        
        }
        
        
        
        location ~.*\.(js|css|jpg|jpeg|png|doc|gif|htm|html|bmp|swf|ioc|rar|zip|txt|flv|mid|ppt|pdf|xls|mp3|wma)$ {
        
        #配置Nginx動靜分離,定義的靜態頁面直接從Nginx發佈目錄讀取,不過發佈項目的時候得將項目也發到nginx的發佈目錄。這樣作針對的是遠程的動靜分離,特別是負載均衡的時候更加須要使用了
        #也能夠是後端服務器的項目地址,好比tomcat的,這樣比較方便,不用將項目再次發佈到nginx裏面的,這樣作針對與本地的動靜分離
        #root    html;  
        root    D:/tomcat/7.65/apache-tomcat-7.0.65-windows-x86/apache-tomcat-7.0.65/webapps;
        
        #expires定義用戶瀏覽器緩存的時間爲15天,若是靜態頁面不常更新,能夠設置更長,這樣能夠節省帶寬和緩解服務器的壓力        
        expires 30d; 
        }

        location / {
            #後端服務器數據回傳時間(代理髮送超時)  
            proxy_connect_timeout   60s; 
            
            #後端服務器數據回傳時間(代理髮送超時) 
            proxy_send_timeout      60s; 
            
            #鏈接成功後,後端服務器響應時間(代理接收超時)  
            proxy_read_timeout      60s; 
            
           
            
            # 真實的客戶端IP
            #proxy_set_header   X-Real-IP        $remote_addr; 
            # 請求頭中Host信息
            #proxy_set_header   Host             $host; 
            # 代理路由信息,此處取IP有安全隱患
            #proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            # 真實的用戶訪問協議
            #proxy_set_header   X-Forwarded-Proto $scheme;
            # 默認值default,
            # 後端response 302時 tomcat header中location的host是http://192.168.1.62:8080
            # 由於tomcat收到的請求是nginx發過去的, nginx發起的請求url host是http://192.168.1.62:8080
            # 設置爲default後,nginx自動把響應頭中location host部分替換成當前用戶請求的host部分
            # 網上不少教程將此值設置成 off,禁用了替換,
            # 這樣用戶瀏覽器收到302後跳到http://192.168.1.62:8080,直接將後端服務器暴露給瀏覽器
            # 因此除非特殊須要,不要設置這種多此一舉的配置
            #proxy_redirect default;
            
            
            #容許客戶端請求的最大單文件字節數  
            client_max_body_size   10m; 
            
            
            #proxy_buffering:該指令控制緩衝是否啓用。默認狀況下,它的值是「on」。
            
            
            #緩衝區代理緩衝用戶端請求的最大字節數
            client_body_buffer_size   128k;   
            
            
            #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
            #從後端服務器的響應頭緩衝區大小,它包含headers,和其餘部分響應是分開的。
            #該指令設置響應部分的緩衝區大小。默認狀況下,它和proxy_buffers是相同的尺寸,
            #但由於這是用於頭信息,這一般能夠設置爲一個較低的值。
            proxy_buffer_size   4k; 
            
            #proxy_buffers緩衝區,網頁平均在32k如下的設置
            #該指令控制代理響應緩衝區的數量(第一個參數)和大小(第二個參數)。
            #默認配置是8個緩衝區大小等於一個內存頁(4K或者8K)。
            #增長緩衝區的數目可讓你緩衝更多信息。
            proxy_buffers   4 32k; 
            
            #高負荷下緩衝大小(proxy_buffers*2)
            #此指令設置標註「client-ready」緩衝區的最大尺寸。
            #而客戶端能夠一次讀取來自一個緩衝區的數據,緩衝被放置在隊列中,批量發送到客戶端。
            #此指令控制容許是在這種狀態下的緩衝空間的大小。
            proxy_busy_buffers_size   64k; 
            
            #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
            #這是每一個請求能用磁盤上臨時文件最大大小。
            #這些當上遊響應太大不能裝配到緩衝區時被建立
            #沒有設置緩存文件夾,因此不能直接設置這個,不然報錯
            #proxy_max_temp_file_size 2048m;
            
            #這是當被代理服務器的響應過大時Nginx一次性寫入臨時文件的數據量。
            proxy_temp_file_write_size  64k;
        
            root   html;
            index  index.html index.htm;
            
            
            
        #本地動靜分離反向代理配置       
        #全部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;       
        #} 
   
       
        #把請求轉發給後臺web服務器,反向代理和fastcgi的區別是,反向代理後面是web服務器,fastcgi後臺是fasstcgi監聽進程,固然,協議也不同。   
        # location / {   
        #    proxy_pass      http://127.0.0.1:8080;   
        #}         
        
        
        
        
            
        proxy_pass http://localhosting;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
            
        #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
            
            
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    
    
    
    # server 表示一個虛擬主機,一臺服務器可配置多個虛擬主機
    server {
        listen       9090;
        server_name  localhost;
        # 一個關鍵設置,與url參數亂碼問題有關
        charset utf-8;
        
        #配置對應虛擬主機的日誌
        #access_log  logs/host.access.log  main;
        
        
    
        
    
        
   

        location /{
            #靜態網頁的地址html文件夾
            root   html;
            index  index.html index.htm;
            # deny all; 拒絕請求,返回403
            # allow all; 容許請求
            
            #開啓自動列目錄,前提添加須要在html文件夾裏面沒有index.html等之類設置的默認主頁
            #估計目前不怎麼須要開啓自動列目錄
            #autoindex on;
        }
        
        #解決重啓或者是訪問nginx的出現favicon錯誤createFile的錯誤
        location = /favicon.ico {
           log_not_found off;
        }
        
        #配置基本緩存,應該是在server裏面配置,由於能夠有多個server,每一個server須要配置的緩存狀況可能都不同
        #當前目前下,無論前面路徑是什麼,只有文件的後綴是jpg,png,swf,gif那麼就會自動進行下面的緩存配置  文件之間用豎線隔開
        location ~.*\.(jpg|png|swf|gif)$ {
            #表示上面設置的緩存30天后就會清除,由於是圖片,因此常規是30天清除圖片類的緩存
            expires 30d;  
        }
        
        #同時能夠設置其餘類型的文件的緩存好比js,css
        location ~.*\.(css|js)$ {
            #表示上面設置的緩存1小時後就會清除,由於是css,js,因此常規是1小時後清除
            expires 1d;
        }
        
        
        # 定義各種錯誤頁
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       

       
    }


    
   

}  

相關文章
相關標籤/搜索