文章目錄
- 1、隱藏版本號
- 2、修改用戶與組
- 3、緩存時間
- 4、日志切割
- 5、連接超時
- 6、更改進程數
- 7、配置網頁
- 8、防盜鏈
1、隱藏版本號
隱藏nginx的版本號,為了防止惡意用戶利用已知漏洞進行攻擊
## 查看版本號
curl -I http://192.168.10.23方法一:修改配置文件方式
vim /usr/local/nginx/conf/nginx.conf
http {include mime.types;default_type application/octet-stream;## 添加,關閉版本號server_tokens off; ......
}systemctl restart nginx
curl -I http://192.168.10.23方法二:
vim /opt/nginx-1.12.0/src/core/nginx.h
#define NGINX_VERSION "1.1.1" #修改版本號
#define NGINX_VER "IIS" NGINX_VERSION #修改服務器類型cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make -j 2vim /usr/local/nginx/conf/nginx.conf
http {include mime.types;default_type application/octet-stream;server_tokens on;......
}## 重啟服務
systemctl restart nginx
## 測試
curl -I http://192.168.10.23
2、修改用戶與組
vim /usr/local/nginx/conf/nginx.conf
## 取消注釋,修改用戶為 nginx ,組為 nginx
user nginx nginx;
## 重啟
systemctl restart nginx
## 查看
ps aux | grep nginx
## 主進程由root創建,子進程由nginx創建
3、緩存時間
當Nginx將網頁數據返回給客戶端后,可設置緩存的時間,以方便在日后進行相同內容的請求時直接返回,避免重復請求,加快了訪問速度;一般針對靜態網頁設置,對動態網頁不設置緩存時間
設置緩存過期時間,主要是控制靜態資源的緩存時間, 方便提高網站訪問速度
vim /usr/local/nginx/conf/nginx.conf
## 加入新的 location,以圖片作為緩存對象
location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ { root html;## 指定緩存時間,1天expires 1d; ## 1s,1m,1h
}#重啟服務
systemctl restart nginx
4、日志切割
vim /opt/fenge.sh
#!/bin/bash
## 顯示前一天的時間
day=$(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-$day ## 向指定進程發送USR1信號
kill -USR1 $(cat $pid_path)
## 建新日志文件
find $logs_path -mtime +30 -exec rm -rf {} \;
## 刪除30天之前的日志文件
## find $logs_path -mtime +30 | xargs rm -rf ## 文件賦權
chmod +x /opt/fenge.sh## 啟動腳本
/opt/fenge.sh
ls /var/log/nginx
ls /usr/local/nginx/logs/access.log ## 定時任務
crontab -e
0 1 * * * /opt/fenge.sh
5、連接超時
HTTP有一個KeepAlive模式,它告訴web服務器在處理完一個請求后保持這個TCP連接的打開狀態。若接收到來自同一客戶端的其它請求,服務端會利用這個未被關閉的連接,而不需要再建立一個連接。
KeepAlive 在一段時間內保持打開狀態,它們會在這段時間內占用資源。占用過多就會影響性能
vim /usr/local/nginx/conf/nginx.conf
http {
...... keepalive_timeout 65 180; 三次握手的超時時間client_header_timeout 80; 等待客戶端發送請求頭的超時時間會送408 錯誤client_body_timeout 80; 設置客戶端發送請求體的超時時間
......
}
keepalive_timeout
指定KeepAlive的超時時間(timeout)。指定每個TCP連接最多可以保持多長時間,服務器將會在這個時間后關閉連接。 Nginx的默認值是65秒,有些瀏覽器最多只保持 60 秒,所以可以設定為 60 秒。若將它設置為0,就禁止了keepalive 連接
第二個參數(可選的)指定了在響應頭Keep-Alive:timeout=time中的time值。這個頭能夠讓一些瀏覽器主動關閉連接,這樣服務器就不必去關閉連接了。沒有這個參數,Nginx 不會發送 Keep-Alive 響應頭
client_header_timeout
客戶端向服務端發送一個完整的 request header 的超時時間。如果客戶端在指定時間內沒有發送一個完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)
client_body_timeout
指定客戶端與服務端建立連接后發送 request body 的超時時間。如果客戶端在指定時間內沒有發送任何內容,Nginx 返回 HTTP 408(Request Timed Out)
6、更改進程數
在高并發場景,需要啟動更多的Nginx進程以保證快速響應,以處理用戶的請求,避免造成阻塞
## 查看cpu核數
cat /proc/cpuinfo | grep -c "physical id"
#查看nginx主進程中包含幾個子進程
ps aux | grep nginx vim /usr/local/nginx/conf/nginx.conf
worker_processes 2;
## 設置每個進程由不同cpu處理,進程數配為4時0001 0010 0100 1000
worker_cpu_affinity 01 10;## 重啟
systemctl restart nginx
7、配置網頁
Nginx的ngx_http_gzip_module壓縮模塊提供對文件內容壓縮的功能
允許Nginx服務器將輸出內容在發送客戶端之前進行壓縮,以節約網站帶寬,提升用戶的訪問體驗,默認已經安裝
可在配置文件中加入相應的壓縮功能參數對壓縮性能進行優化
vim /usr/local/nginx/conf/nginx.conf
http {
...... ## 取消注釋,開啟gzip壓縮功能gzip on; ## 最小壓縮文件大小gzip_min_length 1k; ## 壓縮緩沖區,大小為4個64k緩沖區gzip_buffers 4 64k;## 壓縮版本(默認1.1,前端如果是squid2.5請使用1.0) gzip_http_version 1.1; ## 壓縮比率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;
......
}cd /usr/local/nginx/html
先將game.jpg文件傳到/usr/local/nginx/html目錄下
vim index.html
......
<img src="game.jpg"/> #網頁中插入圖片
</body>
</html>nginx -s reload在Linux系統中,打開火狐瀏覽器,右擊點查看元素
選擇 網絡 ---> 選擇 HTML、WS、其他
訪問 http://192.168.10.23 ,雙擊200響應消息查看響應頭中包含 Content-Encoding: gzip
8、防盜鏈
----------------配置防盜鏈-------------------
vim /usr/local/nginx/conf/nginx.conf
http {
......server {......location ~* \.(jpg|gif|swf)$ {valid_referers none blocked *.kgc.com kgc.com;if ( $invalid_referer ) {rewrite ^/ http://www.kgc.com/error.png;#return 403;}} ......}
}
----------------------------------------------------------------------------------------------------------
~* \.(jpg|gif|swf)$ :這段正則表達式表示匹配不區分大小寫,以.jpg 或.gif 或.swf 結尾的文件;
valid_referers :設置信任的網站,可以正常使用圖片;
none:允許沒有http_refer的請求訪問資源(根據Referer的定義,它的作用是指示一個請求是從哪里鏈接過來的,如果直接在瀏覽器的地址欄中輸入一個資源的URL地址,那么這種請求是不會包含 Referer 字段的),如 http://www.kgc.com/game.jpg
我們使用 http://www.kgc.com 訪問顯示的圖片,可以理解成 http://www.kgc.com/game.jpg 這個請求是從 http://www.kgc.com 這個鏈接過來的。
blocked:允許不是http://開頭的,不帶協議的請求訪問資源;
*.kgc.com:只允許來自指定域名的請求訪問資源,如 http://www.kgc.comif語句:如果鏈接的來源域名不在valid_referers所列出的列表中,$invalid_referer為true,則執行后面的操作,即進行重寫或返回 403 頁面。
----------------------------------------------------------------------------------------------------------
網頁準備:
Web源主機(192.168.10.23)配置:
cd /usr/local/nginx/html
將game.jpg、error.png文件傳到/usr/local/nginx/html目錄下
vim index.html
<html>
<body>
<img src="game.jpg"/>
</body>
</html>echo "192.168.10.23 www.kgc.com" >> /etc/hosts
echo "192.168.10.80 www.benet.com" >> /etc/hosts 盜鏈網站主機(192.168.10.80):
cd /usr/local/nginx/html
vim index.html
......
<img src="http://www.kgc.com/game.jpg"/>
</body>
</html>echo "192.168.10.23 www.kgc.com" >> /etc/hosts
echo "192.168.10.80 www.benet.com" >> /etc/hosts 在盜圖網站主機上進行瀏覽器驗證
http://www.benet.com