[toc] 此文章借鑑(小馬哥 Maximilian Kalbfell)html
nginx配置文件分爲5個區塊:node
http { include mime.types; #設定mime類型,類型由mime.type文件定義 default_type application/octet-stream; access_log /usr/local/nginx/log/nginx/access.log; #設定日誌格式 sendfile on; #指令指定 nginx 是否調用 sendfile 函數 #autoindex on; #開啓目錄列表訪問,合適下載服務器,默認關閉。 tcp_nopush on; ##防止網絡阻塞 keepalive_timeout 60; ##keepalive超時時間 tcp_nodelay on; ##提升數據的實時響應性 gzip on; ##開啓gzip壓縮 gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; ##壓縮級別大小,最大爲9,值越小,CPU處理更快,值越大,消耗CPU比較高。 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) open_file_cache max=102400 inactive=20s; ###這個將爲打開文件指定緩存,默認是沒有啓用的 open_file_cache_valid 30s; ####這個是指多長時間檢查一次緩存的有效信息。 open_file_cache_min_uses 1; ###inactive參數時間內文件的最少使用次數 include vhosts.conf; ###包含其它配置文件,如自定義的虛擬主機 }
語法:upstream name {.......} name是自定義的一個名字,而{}則是須要定義的內容,只能在http塊定義,不能在server塊裏定義。定義完以後可在location塊 下寫入以下代碼進行調用:http://name 4種負載均衡算法:nginx
1 輪詢算法(默認): 每一個請求按時間順序逐一分配到不一樣的後端服務器,若是後端服務器down掉,能自動剔除。 upstream name { server 192.168.1.1:80 ; server 192.168.1.2:81 ; }算法
2 ip_hash算法:每一個請求按訪問IP的hash結果分配,同一個IP客戶端固定訪問一個後端服務器; upstream name { ip_hash; //添加參數支持哈希 server 192.168.1.1:80 ; server 192.168.1.2 :81 ; }後端
3 權重算法:指定輪詢概率,weight和訪問比率成正比。用於後端服務器性能不均的狀況 upstream name { server 192.168.1.1:80 weight=1; server 192.168.1.2:81 weight=9; }緩存
4 最少鏈接(least_conn):把請求轉發給鏈接數較少的後端服務器進行處理 upstream name { least_conn; server 192.168.1.1:80 weight=1; server 192.168.1.2:81 weight=1; }服務器
nginx反向代理介紹 反向代理:以代理服務器來接受鏈接請求,而後將請求轉發給內部網絡上的服務器(真實服務器);並將獲得的結果返回給請求方。(此時代理服務器對外就表現爲一個獨立的服務器)網絡
語法: 1.直接proxy_pass 詳細地址 location / { proxy_pass http://192.168.1.1:80; } 2.結合負載均衡upstream upstream name {192.168.1.1:80} location / { proxy_pass http://name; } ##反向代理實例: 真實內容服務器nginx配置文件以下: location / { add_header X-Frame-Options DENY; root /opt/test/; proxy_set_header X-Client-Really-IP $remote_addr; index index.html index.htm; } 代理服務器nginx配置文件以下: location / { proxy_pass http://10.0.1.7:80; root html; index index.html index.htm; }