Nginx的伺服器的安裝配置(子域訪問,日誌的列印查看訪問的時間)
昨天完成了伺服器linux下面的maven 資料庫<mysql> tomcat resin jetty伺服器的安裝和配置,還有怎麼部署web項目
今天開始完成安裝和配置Nginx伺服器在linux環境下
配置Nginx,使用子域訪問
相關參考資料(https://www.cnblogs.com/piscesLoveCc/p/5794926.html)
開始安裝Nginx的環境依賴(ubantu)
安裝gcc g++的依賴庫
apt-get install build-essential
apt-get install libtool
安裝 pcre依賴庫(http://www.pcre.org/)
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
安裝 zlib依賴庫(http://www.zlib.net)
apt-get install zlib1g-dev
安裝 ssl依賴庫
apt-get install openssl
安裝Nginx(http://nginx.org)
(嚴格按照下面的安裝和配置的步驟--->不然會出錯)
#下載最新版本:
wget http://nginx.org/download/nginx-1.11.3.tar.gz
#解壓:
tar -zxvf nginx-1.11.3.tar.gz
#進入解壓目錄:
cd nginx-1.11.3
#配置:
./configure --prefix=/usr/local/nginx
#編輯nginx:
make
注意:這裡可能會報錯,提示「pcre.h No such file or directory」,具體詳見:http://stackoverflow.com/questions/22555561/error-building-fatal-error-pcre-h-no-such-file-or-directory
需要安裝 libpcre3-dev,命令為:sudo apt-get install libpcre3-dev
#安裝nginx:
sudo make install
#啟動nginx:(在nginx-1.11.3目錄下面)
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路徑,不加的話,nginx會自動載入默認路徑的配置文件,可以通過 -h查看幫助命令。
#查看nginx進程:
ps -ef|grep nginx
最後在瀏覽器裡面訪問47.94.14.145
Nginx常用命令
參考文檔(https://www.cnblogs.com/piscesLoveCc/p/5794926.html)
啟動 Nginx(在/usr/local/nginx下面)
/usr/local/nginx/sbin/nginx
./sbin/nginx
停止 Nginx(在/usr/local/nginx下面)
./sbin/nginx -s stop
./sbin/nginx -s quit
-s都是採用向 Nginx 發送信號的方式。
Nginx重新載入配置
./sbin/nginx -s reload
指定配置文件
./sbin/nginx -c /usr/local/nginx/conf/nginx.conf
-c表示configuration,指定配置文件
https://www.cnblogs.com/chengmo/archive/2010/06/28/1766876.html
接下來準備配置子域名
首先打開nginx域名配置文件存放目錄:/usr/local/nginx/conf/servers
啟動tomcat
然後再root@fuwei:/usr/local/nginx/conf# 目錄下
打開Nginx.conf vi nginx.conf
保存退出---->./sbin/nginx -s reload(重載Nginx)
接下來訪問網頁http://47.94.14.145/ssm/
在Nginx裡面配置tomcat的項目
查看Nginx日誌,編寫腳本統計訪問次數,統計響應延時。
參考文檔(https://www.cnblogs.com/chengmo/archive/2010/06/28/1766876.html)
1、log_format 格式
log_format name( 格式名字) 格式樣式(即想要得到什麼樣的日誌內容)
默認的示例:
log_format main $remote_addr - $remote_user [$time_local] "$request"
$status $body_bytes_s ent "$http_referer"
"$http_user_agent" "$http_x_forwarded_for"
注釋:
$remote_addr 與$http_x_forwarded_for 用以記錄客戶端的ip地址;
$remote_user :用來記錄客戶端用戶名稱;
$time_local : 用來記錄訪問時間與時區;
$request : 用來記錄請求的url與http協議;
$status : 用來記錄請求狀態;成功是200,
$body_bytes_s ent :記錄發送給客戶端文件主體內容大小;
$http_referer :用來記錄從那個頁面鏈接訪問過來的;
$http_user_agent :記錄客戶毒啊瀏覽器的相關信息;
創建一個slow.sh
http://blog.csdn.net/qq_34341290/article/details/53349867
#!/bin/sh
export PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin;
export.GB2312;
function usage()
{
echo "$0 filelog options";
exit 1;
}
function slowlog()
{
#set -x;
field=$2;
files=$1;
end=2;
msg="";
[[ $2 == 1 ]] && field=1&&end=2&&msg="總訪問次數統計";
[[ $2 == 2 ]] && field=3&&end=4&&msg="平均訪問時間統計";
echo -e "rnrn";
echo -n "$msg";
seq -s # 30 | sed -e s/[0-9]*//g;
awk {split($7,bbb,"?");arr[bbb[1]]=arr[bbb[1]]+$NF; arr2[bbb[1]]=arr2[bbb[1]]+1; } END{for ( i in arr ) { print i":"arr2[i]":"arr[i]":"arr[i]/arr2[i]}} $1 | sort -t: +$field -$end -rn |grep "pages" |head -30 | sed s/:/t/g
}
[[ $# < 2 ]] && usage;
slowlog $1 $2;
退出保存
運行
chmod +x ./slow.sh
chmod +x slow.sh
./slow.sh /var/log/nginx/
./slow.sh /var/log/nginx/access.log 2
http://blog.csdn.net/u014470581/article/details/51493150(參考資料)
代碼對於標準bash而言沒有錯,因為Ubuntu/Debian為了加快開機速度,用dash代替了傳統的bash,是dash在搗鬼,解決方法就是取消dash。
運行 sudo dpkg-reconfigure dash
在選擇項中選 No ,搞定了!
平均訪問時間統計#############################
awk: cannot open /var/log/nginx/access.log (No such file or directory)
沒有這個文件
主要是在/var/log/nginx/access.log沒有這個文件
先創建這個目錄文件
運行成功了,不過看不見時間
腳本的先放一放---->後面來解決(一般的步驟都是這個樣子)
nginx反向代理伺服器的工作原理
參考文章(http://blog.csdn.net/ywl570717586/article/details/51556912)
一 概述
反向代理(Reverse Proxy)方式是指以代理伺服器來接受Internet上的連接請求,然後將請求轉發給內部網路上的伺服器;並將從伺服器上得到的結果返回給Internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。
通常的代理伺服器,只用於代理內部網路對Internet的連接請求,客戶機必須指定代理伺服器,並將本來要直接發送到Web伺服器上的http請求發送到代理伺服器中。當一個代理伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向代理服務。
二 反向代理伺服器的工作原理
反向代理伺服器通常有兩種模型,它可以作為內容伺服器的替身,也可以作為內容伺服器集群的負載均衡器。
1,作內容伺服器的替身
如果您的內容伺服器具有必須保持安全的敏感信息,如信用卡號資料庫,可在防火牆外部設置一個代理伺服器作為內容伺服器的替身。當外部客戶機嘗試訪問內容伺服器時,會將其送到代理伺服器。實際內容位於內容伺服器上,在防火牆內部受到安全保護。代理伺服器位於防火牆外部,在客戶機看來就像是內容伺服器。
當客戶機向站點提出請求時,請求將轉到代理伺服器。然後,代理伺服器通過防火牆中的特定通路,將客戶機的請求發送到內容伺服器。內容伺服器再通過該通道將結果回傳給代理伺服器。代理伺服器將檢索到的信息發送給客戶機,好像代理伺服器就是實際的內容伺服器(參見圖 2)。如果內容伺服器返回錯誤消息,代理伺服器會先行截取該消息並更改標頭中列出的任何 URL,然後再將消息發送給客戶機。如此可防止外部客戶機獲取內部內容伺服器的重定向 URL(URL重定向,是指當使用者瀏覽某個網址時,將他導向到另一個網址的技術。常用在把一串很長的網站網址,轉成較短的網址。因為當要傳播某網站的網址時,常常因為網址太長,不好記憶;又有可能因為換了網路的免費網頁空間,網址又必須要變更,不知情的使用者還以為網站關閉了。這時就可以用網路上的轉址服務了。這個技術使一個網頁是可藉由不同的統一資源定位符連結)。
這樣,代理伺服器就在安全資料庫和可能的惡意攻擊之間提供了又一道屏障。與有權訪問整個資料庫的情況相對比,就算是僥倖攻擊成功,作惡者充其量也僅限於訪問單個事務中所涉及的信息。未經授權的用戶無法訪問到真正的內容伺服器,因為防火牆通路只允許代理伺服器有權進行訪問。
可以配置防火牆路由器,使其只允許特定埠上的特定伺服器(在本例中為其所分配埠上的代理伺服器)有權通過防火牆進行訪問,而不允許其他任何機器進出。
2,作為內容伺服器的負載均衡器
可以在一個組織內使用多個代理伺服器來平衡各 Web 伺服器間的網路負載。在此模型中,可以利用代理伺服器的高速緩存特性,創建一個用於負載平衡的伺服器池。此時,代理伺服器可以位於防火牆的任意一側。如果 Web 伺服器每天都會接收大量的請求,則可以使用代理伺服器分擔 Web 伺服器的負載並提高網路訪問效率。
對於客戶機發往真正伺服器的請求,代理伺服器起著中間調停者的作用。代理伺服器會將所請求的文檔存入高速緩存。如果有不止一個代理伺服器,DNS 可以採用「循環復用法」選擇其 IP 地址,隨機地為請求選擇路由。客戶機每次都使用同一個 URL,但請求所採取的路由每次都可能經過不同的代理伺服器。
可以使用多個代理伺服器來處理對一個高用量內容伺服器的請求,這樣做的好處是內容伺服器可以處理更高的負載,並且比其獨自工作時更有效率。在初始啟動期間,代理伺服器首次從內容伺服器檢索文檔,此後,對內容伺服器的請求數會大大下降。
今天完成的事情:完成了Nginx的安裝配置和子域的配置和訪問,在載入tomcat裡面的項目文件,還有配置Nginx的日誌文件,怎麼查看access.log的文件.
明天的計劃:查看Resin日誌,統計訪問DB時間,Controller處理時間。---->處理resin的日誌的怎麼查看
今天遇到的困難:
1.就是在安裝和配置Nginx的子域的項目,最開始沒有啟動tomcat,一直訪問不到tomcat裡面的項目文件,還有代理的伺服器(這個還不是很了解)
2.就是在Nginx的日誌文件的配置,還在日誌的列印訪問的時候,access.log裡面沒有內容,最開始的編譯的問題解決啦,主要是ubantu的bash出問題啦,就執行代碼sudo dpkg-reconfigure dash----->選擇NO就可以
今天的收穫:Nginx的安裝配置和子域的配置和訪問,在載入tomcat裡面的項目文件,還有配置Nginx的日誌文件,怎麼查看access.log的文件.
推薦閱讀:
※直播時代大洗牌,你的小船是否會翻
※服務端基於性能監控的優化思路
※kids 開源了!
※10分鐘搭建MySQL Binlog分析+可視化方案
※[A03]力量訓練日誌12/29 -12/31