00.課程介紹部分
1.nginx服務(wù)企業(yè)配置方法
網(wǎng)站日志信息配置方法
2.nginx服務(wù)location配置 匹配URI
3.nginx服務(wù)rewrite配置 跳轉(zhuǎn)
4.nginx服務(wù)訪問流量控制
01.課程知識回顧
1.如何實(shí)現(xiàn)使用nginx部署多個網(wǎng)站頁面 www blog bbs (多個虛擬機(jī)配置)
寫出多個配置文件 --> 分別創(chuàng)建站點(diǎn)目錄/首頁文件 --> 配置本地hosts信息
2.網(wǎng)站頁面訪問方式
基于ip地址訪問 --> 涉及到IP地址修改必須重啟不能reload
基于域名訪問 --> 配置文件配好后直接訪問即可
基于端口訪問 --> 修改配置文件 改端口后需 www.xxxxx:端口號 即可看見
3.利用nginx搭建數(shù)據(jù)共享服務(wù)器
在站點(diǎn)目錄創(chuàng)建共享數(shù)據(jù)資源
必須刪除首頁文件
修改配置文件 autoindex on;
4.網(wǎng)站頁面安全訪問控制
a 根據(jù)用戶的IP地址做限制 allow(允許) deny(禁止)
b 根據(jù)認(rèn)證方式進(jìn)行訪問控制 location模塊下寫
auth_basic "oldboy";
auth_basic_user_file /etc/nginx/password.txt
htpasswd -bc /etc/nginx/password.txt xxx xxxxxx
5.訪問網(wǎng)頁連接線監(jiān)控功能
可以實(shí)現(xiàn)查看用戶訪問連接數(shù)的信息
編輯配置文件 /etc/nginx/conf.d/status.conf
stub_status; ---開啟監(jiān)控功能
本地域名解析,即可查看
02. nginx服務(wù)訪問流量控制
網(wǎng)站受到攻擊,使網(wǎng)站壓力過大
方式一: 基于IP地址連接數(shù)進(jìn)行控制
說明: 控制一個源IP地址只能建立1個連接
http_limit_conn_module 模塊名稱
配置指令信息:
Syntax: 1
Default: —
Context: http
key: 變量信息,在連接建立后,收集什么信息做控制管理
· $remote_addr 變量的長度為7字節(jié)到15字節(jié) 存儲狀態(tài)在32位平臺中占用32字節(jié)或64字節(jié)嫩实,在64位平臺中占用64字節(jié)。
· $binary_remote_addr 變量的長度是固定的4字節(jié) 存儲狀態(tài)在32位平臺中占用32字節(jié)或64字節(jié)炕婶,在64位平臺中占用64字節(jié)。
1M共享空間可以保存3.2萬個32位的狀態(tài)挥等,1.6萬個64位的狀態(tài)牡辽。
zone: 定義共享存儲空間
· name: 存儲空間的名稱信息
· size: 存儲空間大小信息
Syntax: limit_conn zone number;
Default: —
Context: http, server, location
zone: 調(diào)用響應(yīng)的存儲空間
number: 限制存儲空間源IP地址可以處理的數(shù)量
配置樣例:
[root@web02 conf.d]# cat www.conf
limit_conn_zone $binary_remote_addr zone=oldboy:10m;
server {
listen 80;
server_name www.oldboy.com;
root /html/www;
index index.html;
limit_conn oldboy 1;
}
方式二:基于用戶訪問請求的頻次
http_limit_req_module
配置指令信息:
Syntax: limit_req_zone key zone=name:size rate=rate [sync];
Default: —
Context: http
key: 變量信息,在連接建立后,收集什么信息做控制管理
· $remote_addr 變量的長度為7字節(jié)到15字節(jié) 存儲狀態(tài)在32位平臺中占用32字節(jié)或64字節(jié),在64位平臺中占用64字節(jié)迅矛。
· $binary_remote_addr 變量的長度是固定的4字節(jié) 存儲狀態(tài)在32位平臺中占用32字節(jié)或64字節(jié)棒坏,在64位平臺中占用64字節(jié)燕差。
1M共享空間可以保存3.2萬個32位的狀態(tài),1.6萬個64位的狀態(tài)坝冕。
zone: 定義共享存儲空間
· name: 存儲空間的名稱信息
· size: 存儲空間大小信息
rate: 多個請求頻次信息
Syntax: limit_req zone=name [burst=number] [nodelay];
Default: —
Context: http, server, location
burst=number: 最大的請求閾值, 超過閾值請求都會進(jìn)行控制
[root@web02 conf.d]# cat www.conf
limit_req_zone $binary_remote_addr zone=creq:10m rate=1r/s;
server {
listen 80;
server_name www.oldboy.com;
root /html/www;
index index.html;
limit_req zone=creq burst=10;
}
03.nginx服務(wù)程序日志說明
1.訪問日志:記錄訪問網(wǎng)站用戶信息
訪問日志如何配置:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 定義日志信息格式
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; 定義日志保存路徑
訪問日志的信息說明:
$remote_addr 客戶端源IP地址
$remote_user 記錄網(wǎng)站認(rèn)證用戶的用戶名稱信息
[$time_local] 客戶端訪問網(wǎng)站頁面的時間
"$request" 記錄請求報文中的請求行信息
$status 服務(wù)端響應(yīng)的狀態(tài)碼信息
$body_bytes_sent 響應(yīng)報文的主體內(nèi)容大小信息(字節(jié))
"$http_referer" 記錄跳轉(zhuǎn)到網(wǎng)站,鏈接地址 (也可芳盜鏈)
"$http_user_agent" 記錄訪問者客戶端信息
"$http_x_forwarded_for" ????
2.錯誤日志:記錄服務(wù)運(yùn)行狀態(tài)信息/記錄網(wǎng)站訪問錯誤的信息
錯誤日志如何配置:
error_log /var/log/nginx/error.log warn; 指定日志保存路徑/指定記錄日志級別
常見調(diào)試/運(yùn)行狀態(tài)信息
debug 調(diào)試級別 最低級別記錄的信息更多
info 信息級別
notice 通知級別
warn 警告級別(建議) 一般設(shè)置為中間級別即可
產(chǎn)生信息表示服務(wù)運(yùn)行異常
error 錯誤級別
crit 嚴(yán)重的錯誤級別
alert 非常嚴(yán)重的錯誤級別
emerg 災(zāi)難級別 最高級別記錄的信息更少
04.課程知識總結(jié)說明:
1.nginx網(wǎng)站流量訪問控制
a 基于源ip地址連接數(shù)進(jìn)行控制
b 基于源ip地址請求數(shù)進(jìn)行控制
2.nginx網(wǎng)站日志功能配置
a 訪問日志配置方法(日志格式信息)
b 錯誤日志配置方法(錯誤日志級別)
3.如何進(jìn)行壓力測試
yum install -y httpd-tools
ab -c 指定并發(fā)數(shù)量 -n 共發(fā)送多少請求 http://www.oldboy.com/
作業(yè):
01. 三個網(wǎng)站都有自己的訪問日志
www網(wǎng)站 --- www_access.log
bbs網(wǎng)站 --- bbs_access.log
blog網(wǎng)站 --- blog_access.log
02. 如何統(tǒng)計一天網(wǎng)站上傳消耗的流量
1M網(wǎng)絡(luò)流量
1M數(shù)據(jù)存儲
awk '{sum=sum+$10}END{print sum*8/1024}' /var/log/nginx/www.log
sum*8=bit
sum*8/1024=kb