Nginx的繼續深入(日誌輪詢切割,重寫,負載均衡等)
Nginx的訪問日誌輪詢切割
通常什麼情況Nginx會把所有的訪問日誌生成到一個制定的訪問日誌檔案access.log裡面,但時間一長,日誌個頭很大不利於日誌的分析和處理。
有必要對Nginx日誌進行按天或按小時進行切割,分成不同的檔案儲存。
[[email protected] logs]#cat /server/script/cut_nginx_log.sh
#!/bin/sh
Dataformat = `date +%Y%m%d`
Basedir = "/usr/local/nginx"
Nginxlogdir = "$Basedir/logs"
Logname = "access_www"
[ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1
[ -f ${Logname}.log] || exit 1
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
$Basedir/sbin/nginx -s reload
注意:指令碼實現切割Nginx日誌的思想為講正在寫入的Nginx日誌改名為(20161111_access_www.log),然後平滑重啟生成新的nginx日誌(access_www.log)
通過定時任務實現每天的00點整定時執行/server/script/cut_nginx_log.sh
00 00 * * * /bin/sh /server/script/cut_nginx_log.sh >/dev/null 2>&1
Nginx 的location語法
location的使用基本語法:
location [= | ~ | ~* | ^~] uri { .... } location 指令 [=|~|~*|@] 匹配標識 uri 匹配的網站網址 {。。。。} 匹配URI後要執行的配置段
~ 區分大小寫(大小寫敏感)
~* 不區分大小寫匹配
!取反
^~ 的作用是用來進行常規的字串匹配檢查之後不做正則表示式的檢查
匹配例項
location = / {
[ configuration A]
}
location / {
[ configuration B]
}
location /documents/ {
[ configuration C]
}
location ^~ /images/ { [ configuration D] }
location ~* \.(gif|jpg|jpeg)$ {
[ configuration E]
}
使用者請求的URL
http://www.abc.com/ 匹配A / http://www.abc.com/ 匹配B /index.html http://www.abc.com/documents/document.html 匹配C /documents/document.html http://www.abc.com/images/1.gif 匹配D /images/1.gif http://www.abc.com/documents/1.gif 匹配E /documents/1.gif
Nginxd rewrite
\ 進行轉義 ^ 匹配輸入字串的起始位置 $ 匹配輸入字串的結束位置 * 匹配0次或多次 + 匹配1次到多次 ? 匹配0次到1次 . 匹配除\n以外的任意字元 (pattern) 匹配括號內的字元
rewrite 指令最後一項引數flag標記說明
last 本條規則匹配完成後,繼續向下匹配新的location URI規則
break 本條規則匹配完成即終止,不在匹配後面的任何規則
redirect 返回302 臨時重定向, 瀏覽器位址列會顯示跳轉後的URI地址
permanent 返回301 永久重定向, 瀏覽器位址列會顯示跳轉後的URI地址
例項:
rewrite ^/(.*) http://www.abc.com/$1 permanent;
Nginx負載均衡
負載均衡模組的元件
ngx_http_proxy_module proxy代理模組 ngx_http_upstream_module 負載均衡模組
upstream www_server_pools { #upstream 關鍵字 www_server_pools 叢集組的名字,可以自己起名字
server 10.1.1.1:80 weight=5; #server關鍵字 ip/域名:埠, 預設80 weight權重
server 10.1.1.1:80 weight=5; #如果用域名解析,需要在hosts裡面有域名解析;或者內網有DNS
server www.abc.com:80 weight=5 backup;
server unix:/temp/backend3; #指定socket檔案/可以不寫
}
通過proxy_pass 功能把使用者的請求交由上面反向代理upstream定義的tornadoes伺服器池處理
weight = 1 代表伺服器權重,預設值是1, 權重數字表示接受的請求比例越大;
max_fails = 1 nginx嘗試連線主機失敗的次數,這個值是配合proxy_next_upstream、fastcgi_next_upstram 和 memcached_mext_upstream三個引數來使用的。
backup 熱備配置(RS節點的高可用),噹噹前啟用的RS都失敗後會自動啟動熱備RS。這標誌這個伺服器作為備份伺服器,如果主宕機,就會向他轉發請求。注意:
當負載排程演算法為ip_hash時,後端伺服器不能是weight和backup
fail_timeout = 10s 在max_fails定義失敗次數後,距離下次檢查的間隔時間,預設是10s;如果是5,就檢測5次,如果5次都是502,那麼就等待10s在去檢查
down 標誌這伺服器永遠不可用,這個引數可以配合ip_hash使用
upstream 模組排程演算法
1.rr輪詢(預設排程演算法,靜態排程演算法)
相當於lvs的rr演算法,如果後端節點伺服器宕機(預設檢測80),自動會從節點地址池剔除
2.wrr(權重輪詢,靜態排程演算法)
例子:
upstream pools{
server 192.168.1.1 weight=1;
server 192.168.1.2 weight=2;
}
3.ip_hash(靜態排程演算法)
每個請求按客戶端的IP的hash進行分配;缺點可能道士分配不均無法保證1:1的負載均衡。比如客戶端的nat上網方式
例子:
upstream pools{
ip_hash;
server backend1.example.com; #可以用ip
server backend2.example.com down;
}
注意:ip_hash時,不能有weight和backup
4.fair(動態排程演算法) 此演算法會根據後端節點伺服器的響應時間來分配請求,響應時間短的優先分配 nginx 本身不支援fair排程演算法,需要下載nginx的相關模組upstram_fair 例子: upstream pool{ server 192.168.1.1; server 192.168.1.2; fair; }
5.least_conn
此演算法會根據後端節點的連線數來決定分配情況,那個機器連線數少就分發。
6.url_hash演算法
和ip_hash 類似,這個是根據訪問 URL的hash分配的。同樣也不能寫入weight等
必須安裝nginx的哈市模組軟體包
例子:
upstream pools{
server queid1:1233;
server squid2:1233;
hash $request_uri;
hash_method crc32;
}
7.一致性hash演算法
Nginx反向代理
http_proxy_module 模組
此模組可以將請求轉發到另一臺伺服器,在實際的反向代理工作中,或通過location功能指定URL,然後在接受到的符合匹配的URI的請求通過proxy_pass 拋給定義好的upstream節點池
案例:
1.將匹配URI為name的請求拋給http://127.0.0.1/remote/
location /name/ { proxy_pass http://127.0.0.1/remote/; }
2.將匹配URI為name的請求應用指定的rewrite規則,然後拋給http://127.0.0.0.1.
location /name/ {
rewrite /name/([^/]+) /users?name=$1 break;
proxy_pass http://127.0.0.1;
}
相關推薦
Nginx的繼續深入(日誌輪詢切割,重寫,負載均衡等)
Nginx的訪問日誌輪詢切割 通常什麼情況Nginx會把所有的訪問日誌生成到一個制定的訪問日誌檔案access.log裡面,但時間一長,日誌個頭很大不利於日誌的分析和處理。 有必要對Nginx日誌進行按天或按小時進行切割,分成不同的檔案儲存。 [[email protected] logs
【轉】淺談一個網頁打開的全過程(涉及DNS、CDN、Nginx負載均衡等)
位置 filters 產生 多種方法 tps windows cnblogs 這就是 廣東 1、概要 從用戶在瀏覽器輸入域名開始,到web頁面加載完畢,這是一個說復雜不復雜,說簡單不簡單的過程,下文暫且把這個過程稱作網頁加載過程。下面我將依靠自己的經驗,總結一下整個過程
淺談一個網頁開啟的全過程(涉及DNS、CDN、Nginx負載均衡等)
1、概要 從使用者在瀏覽器輸入域名開始,到web頁面載入完畢,這是一個說複雜不復雜,說簡單不簡單的過程,下文暫且把這個過程稱作網頁載入過程。下面我將依靠自己的經驗,總結一下整個過程。如有錯漏,歡迎指正。 閱讀本文需要讀者已有一定的計算機知識,瞭解TCP、DNS等。 2、分析 眾所周知,開啟
SpringCloud(四)Ribbon負載均衡《2》(核心元件IRule及自定義Ribbon負載均衡策略)
1、Ribbon核心元件IRule 1.1、解析IRule自帶的7種演算法 IRule:根據特定演算法從服務列表中選取一個要訪問的服務。 IRule實現類如下: RandomRule:隨機,使用Random物件從服務列表中隨機選擇一個服務 RoundRobinR
nginx變量(日誌)
pan doc microsoft ont ram png blog 分享 alt nginx變量(日誌) HTTP請求變量 - arg_PARAMETER、http_HEADER、sent_http_HEADER 它是指http請求中的變量,舉例: 修改/etc/ng
Apache日誌輪詢配置詳解
Apache日誌輪詢介紹 Apache日誌輪詢配置 Apache虛擬主機日誌輪詢 Apache日誌輪詢配置詳解1、apache日誌輪詢作用隨著服務器的不斷運行,日誌文件會越來越大,如果不小心把日誌文件放到了/var之類位置,日誌文件可能寫滿分區,從而導致服務器被迫停止運行。這種事情確實曾經發生過。
Linux 下 logrotate 日誌輪詢操作梳理
對於 Linux 系統安全來說,日誌檔案是極其重要的工具。不知為何,我發現很多運維同學的伺服器上都執行著一些諸如每天切分 Nginx日誌之類的 CRON 指令碼,大家似乎遺忘了 Logrotate,爭相發明自己的輪子,這真是讓人沮喪啊!就好比明明身邊躺著現成的性感美
使用logrotate配置日誌輪詢
logrotate配置 在/etc/logrotate.d/目錄下建立一個配置檔案例如nginx,檔案內容如下: nginx 示例如下: /usr/local/nginx/logs/*.log { &
詳解JavaScript的執行機制:Event Loop(事件輪詢機制)
前言 有人稱Event Loop為事件迴圈機制,而我更願意將其解釋為事件輪詢機制,在之後的內容中你會感受到這一點的區別在哪裡。說是事件輪詢機制,我們也可以說是任務輪詢機制,因為英文是Event Loop,所以我們在此文中將其翻譯為事件輪詢。 閱讀本文之前,首先對JavaScrip
mysql與mariaDB涉及到的檔案(日誌檔案、程序檔案、套接字檔案)
文章目錄 1、引數配置檔案 2、日誌檔案 2.1 錯誤日誌 2.2 慢查詢日誌 2.3 查詢日誌 2.4 二進位制日誌 3、套接字檔案 4、p
11.17 域名解析DNS---------快取記憶體DNS,權威DNS的正反向解析,輪詢:域名轉換,,郵箱解析,內部解析和外部解析
1.概念的介紹 1)DNS DNS(Domain Name System,域名系統),全球資訊網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。 2)快取記憶體DNS服務 快取記憶體DNS服務的作用:正常上網
windows下啟動nginx閃退---(Windows平臺下80埠被System佔用解決辦法)
前言: 在專案中用到nginx,啟動時閃退,檢視錯誤日誌,給出的錯誤如下: nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forb
一篇文章讀懂Nginx(正向代理、反向代理、負載均衡原理)
Nginx配置詳解 nginx概述 nginx是一款自由的、開源的、高效能的HTTP伺服器和反向代理伺服器;同時也是一個IMAP、POP3、SMTP代理伺服器;nginx可以作為一個HTTP伺服器進行網站的釋出處理,另外nginx可以作為反向代理進行負載均衡的實
accept()函式用來告訴Qt,事件處理函式“接收”了這個事件,不要再傳遞;ignore()函式則告訴Qt,事件處理函式“忽略”了這個事件,需要繼續傳遞(看一下QWidget::mousePressEvent的實現,最為典型。如果希望忽略事件,只要呼叫父類的響應函式即可)
QEvent的accept()和ignore()一般不會用到,因為不如直接呼叫QWidget類的事件處理函式直接,而且作用是一樣的,見下面的例子。 推薦直接呼叫QWidget的事件處理函式。而不是呼叫accept()和ignore()。 只有一種情況下,必須使用呼叫accept()和ign
Nginx詳解(正向代理、反向代理、負載均衡原理)
http { ## # 基礎配置 ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # serv
DNS服務子域委派,授權解析,負載均衡等功能原理解析實驗(歡迎各位朋友蒞臨指教、討論)
子域委派授權負載均衡一、DNS服務器簡易架構圖二、實驗操作步驟~~~~~~~~~~~~~~~~1、設置客戶端域名解析,使之指向緩存服務器~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[root@DNS131 ~]# cat /etc/resolv.conf ; generated
案例二(構建雙主高可用HAProxy負載均衡系統)
fresh htm nec ont unix outer index ces title 在案例一介紹HAProxy高可用負載均衡集群架構中,雖然通過Keepalived實現了HAProxy的高可用,但是嚴重浪費了服務器資源,因為在一主一備的Keepalived環境中,
微信控制家庭智慧小管家機器人技術解析(附語音聊天、人臉檢測、自主巡航等)
微信控制家庭智慧小管家機器人技術解析(附語音聊天、人臉檢測、自主巡航等) 今天分享微信控制家庭智慧小管家機器人(附語音聊天、人臉檢測、自主巡航等)的資料,內容比較多,這邊文章不夠放,更詳細資料到闖客網技術論壇下載,或加群獲取:81328832 下載地址:https://bbs.usoftchina.com
純CSS製作各種各樣的網頁圖示(三角形、暫停按鈕、下載箭頭、加號等)
三角形 ? 1 2 3 4 5 6 7 8 9 10 11 <div class="box"></div> <style> .box{ &
基於Taro + Dva構建的適配不同端(微信小程式、H5、React-Native 等)的時裝衣櫥
前言 Taro 是一套遵循 React 語法規範的 多端開發 解決方案。現如今市面上端的形態多種多樣,Web、React-Native、微信小程式等各種端大行其道,當業務要求同時在不同的端都要求有所表現的時候,針對不同的端去編寫多套程式碼的成本顯然非常高,這時候只編寫一套程式碼就能夠適配到多端的能力就顯得極