一、設置緩存時間
????????當網頁數據返回給客戶端后,可針對靜態網頁設置緩存時間,在配置文件內的http段內server段添加location,更改字段expires 1d來實現:避免重復請求,加快訪問速度
第一步:修改主配置文件
#修改配置文件
vim? ? /apps/nginx/conf/nginx.conf
? ? ? ? #添加以下內容
? ? ? ? location ~ \.(jpg|png|bmp|gif)$ {
? ? ? ? ? ? root ? html;
? ? ? ? ? ? expires 1d;
? ? ? ? }
???
?
#查看是否有語法錯誤
nginx -t
?
#重啟服務
systemctl restart nginx.service?
?
第二步:導入圖片并對網頁文件進行編輯
第三步:編輯主頁文件
vim index.html?
-------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
?
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
?
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
?
<p><em>Thank you for using nginx.</em></p>
<img src="1.jpg"/> ? ? ? ? #插入添加此行
第四步:驗證
#查看是否有語法錯誤
nginx -t
?
#重啟服務
systemctl restart nginx.service?
?
#在網頁中查看服務
192.168.200.12
?
Cahce-Control:max-age=86400 表示緩存時間是 86400 秒。
也就是緩存一天的時間,一天之內瀏覽器訪問這個頁面,都是用緩存中的數據,而不需要向 Nginx 服務器重新發出請求,減少了服務器的使用帶寬。
二、日志分割
? ?使用腳本將很多日志進行切割,可以增加工作效率,方便管理
#編寫日志分割腳本
vim /opt/rzfg.sh
----------------------------------------------
#!/bin/bash
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 -exec rm -rf {} \;
#find $logs_path -mtime +30 |xargs rm -rf
-------------------------------------------------------
#賦權
chmod +x /opt/rzfg.sh
?
#執行腳本
/opt/rzfg.sh
?
#查看日志是否生成
ls /var/log/nginx
ls/usr/local/nginx/logs/access.log?
?
#定時執行日志分割
crontab -e
0 1 * * * /opt/fenge.sh
?
?
#######################注釋###############################
#!/bin/bash
#顯示前一天的時間
DAY=$(date -d "-1 day" +%Y%m%d)
#定義日志存放目錄的路徑?? ??? ??? ??? ??? ??? ??? ?
LOG_PATH="/var/log/nginx"
#定義Nginx PID文件路徑
PID_PATH="/usr/local/nginx/logs/nginx.pid"
#判斷日志存放目錄是否存在,如果不存在則創建日志文件目錄
[ -d $LOG_PATH ] || mkdir -p $LOG_PATH ?? ??? ??? ??? ??? ??? ?
#移動并重命名日志文件
mv /usr/local/nginx/logs/access.log ${LOG_PATH}/my.com-access.log-$DAY
#在Nginx目錄下重建新日志文件
kill -USR1 $(cat $PID_PATH)?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?
#刪除30天之前的日志文件
find $LOG_PATH -mtime +30 -exec rm -rf {} \;?? ??? ??? ??? ??? ?
#find $LOG_PATH -mtime +30 | xargs rm -rf?
三、開啟多進程
cat /proc/cpuinfo | grep -c "physical id"?? ?#查看cpu核數
ps aux | grep nginx?? ??? ??? ??? ??? ??? ??? ?#查看nginx主進程中包含幾個子進程
?
#修改配置文件
vim /apps/nginx/conf/nginx.conf
------------------------------------------------------------------------
worker_processes ?2;?? ??? ??? ??? ?
#修改為核數相同或者2倍
?
worker_cpu_affinity 01 10;?? ?
#設置每個進程由不同cpu處理,進程數配為4時0001 0010 0100 1000 ??
#1所在的位置代表cpu的ID號?
-----------------------------------------------------------
?
#重啟服務
systemctl restart nginx
?
#驗證是否為兩個
ps aux | grep nginx?? ?
四、網頁壓縮
?????????Nginx的ngx_http_gzip_module壓縮模塊提供對文件內容壓縮的功能。允許Nginx服務器將輸出內容在發送客戶端之前進行壓縮,以節約網站帶寬,提升用戶的訪問體驗,默認已經安裝,可在配置文件中加入相應的壓縮功能參數對壓縮性能進行優化。
vim /usr/local/nginx/conf/nginx.conf
---------------------------------------
http {
......?
? ?gzip on;?? ??? ??? ??? ??? ??? ??? ?#取消注釋,開啟gzip壓縮功能
? ?gzip_min_length 1k; ? ? ??? ??? ?#最小壓縮文件大小
? ?gzip_buffers 4 16k; ? ? ??? ??? ?#壓縮緩沖區,大小為4個16k緩沖區
? ?gzip_http_version 1.1; ? ?? ??? ?#壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)
? ?gzip_comp_level 6; ? ? ? ?? ??? ?#壓縮比率
? ?gzip_vary on;?? ??? ??? ??? ??? ?#支持前端緩存服務器存儲壓縮頁面
? ?gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;?? ??? ?#壓縮類型,表示哪些網頁文檔啟用壓縮功能
......?
}
----------------------------------------------------
?
#重啟服務
systemctl restart nginx.service?
?
五、配置防盜鏈
實驗準備:
web源主機(192.168.200.12 www.zhuo.com)
盜鏈主機 (192.168.200.11 www.fake.com)
5.1 配置web源主機(192.168.200.12?www.zhuo.com)
5.1.1?安裝nginx服務并配置被盜鏈圖片
#安裝nginx服務
yum或編譯安裝都可
此處使用編譯安裝,路徑為/usr/local/nginx
不再演示,安裝教程可見《Nginx的搭建與核心配置》
?
#導入圖片1.jpg
準備一張圖片 改名為1.jpg
?
#切換目錄
cd /apps/nginx/html/
?
#上傳圖片
rz -E
?
#編輯主頁文件
vim index.html?
-------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
?
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
?
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
?
<p><em>Thank you for using nginx.</em></p>
<img src="1.jpg"/> ? ? ? ? #插入添加此行
?
-------------------------------------------------------
#檢查和重啟服務
nginx -t
systemctl restart nginx
?
#驗證
火狐輸入
192.168.200.11
5.1.2 配置域名映射關系?
#修改主機名和IP配置文件
vim /etc/hosts
--------------------------------------------------?
127.0.0.1 ? localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 ? ? ? ? localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.12 www.zhuo.com ? ? ? #添加此行
?
#關閉防火墻并重啟服務
systemctl stop firewalld.service?
setenforce 0
systemctl restart nginx
5.2 配置盜鏈主機 (192.168.200.11 www.fake.com)
5.2.1?安裝apache服務并配置盜鏈主頁
#安裝apache服務
yum install httpd -y ?
?
#配置盜鏈主頁
vim /var/www/html/index.html
--------------------------------------------- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
<html>
<body>
<h1>盜鏈</h1>
<img src="http://www.zhuo.com/1.jpg"/> ?#圖片鏈接地址通過瀏覽器訪問http://www.zhuo.com 所得圖片地址
</body>
</html>
5.2.2?設置域名映射
vim /etc/hosts
-----------------------------------------------------------
127.0.0.1 ? localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 ? ? ? ? localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.79.210 www.zhuo.com
192.168.79.28 www.fake.com
5.2.3?重啟服務并測試?
#關閉防火墻并重啟服務
systemctl stop firewalld.service?
setenforce 0
systemctl restart httpd
?
#在盜鏈主機(192.168.79.28 )的瀏覽器中輸入盜鏈主機的域名
打開火狐輸入
192.168.200.12 或 www.zhuo.com
和
192.168.200.11 或 www.fake.com
驗證是否被盜鏈
5.3 在web源主機(192.168.200.12 www.zhuo.com)中配置防盜鏈
5.3.1 將盜鏈圖片放入web源主機中
cd /apps/nginx/html/ ? ? ?#切換目錄
rz -E ? ? ? ? ? ? ? ? ? ? ? ? ?#上傳圖片
5.3.2?配置防盜鏈
vim /apps/nginx/conf/nginx.conf ? ?(約49行開始插入
--------------------------------------------------------
http {
......
?? ?server {
?? ?......
?? ??? ?location ~* \.(jpg|gif|swf)$ {
?? ??? ??? ?valid_referers none blocked *.zhuo.com zhuo.com;
?? ??? ??? ?if ( $invalid_referer ) {
?? ??? ??? ??? ?rewrite ^/ http://www.zhuo.com/2.jfif;
? ? ? ? ? ? }
? ? ? ? }
------------------------------------------------------------
~* \.(jpg|gif|swf)$ :這段正則表達式表示匹配不區分大小寫,以.jpg 或.gif 或.swf 結尾的文件;
?
valid_referers :設置信任的網站,可以正常使用圖片;
?
none:允許沒有http_refer的請求訪問資源(根據Referer的定義,它的作用是指示一個請求是從哪里鏈接過來的,如果直接在瀏覽器的地址欄中輸入一個資源的URL地址,那么這種請求是不會包含 Referer 字段的),如 http://www.zhuo.com/2.jfif?
我們使用 http://www.zhuo.com 訪問顯示的圖片,可以理解成 http://www.zhuo.com/2.jfif 這個請求是從 http://www.zhuo.com 這個鏈接過來的。
?
blocked:允許不是http://開頭的,不帶協議的請求訪問資源;?
?
*.zhuo.com:只允許來自指定域名的請求訪問資源,如 http://www.zhuo.com
?
if語句:如果鏈接的來源域名不在valid_referers所列出的列表中,$invalid_referer為true,則執行后面的操作
?
5.4?驗證防盜鏈是否有效
#在盜鏈主機(192.168.79.28 )的瀏覽器中輸入盜鏈主機的域名
打開火狐輸入
192.168.200.12 或 www.zhuo.com
和
192.168.200.11 或 www.fake.com
驗證是否被盜鏈