Nginx防盜鏈與服務(wù)優(yōu)化配置的全過程
隱藏nginx版本號
查看版本號
方法一:curl命令
可以在 CentOS 中使用命令 curl -I http://192.168.80.130 顯示響應(yīng)報文首部信息。
curl -I http://192.168.80.130

方法二:在網(wǎng)頁中查看
1. #切換至html目錄,拖一個圖片進去
cd /usr/local/nginx/html
?
2. #在網(wǎng)頁中查看
http://192.168.59.118/game.png

隱藏版本信息
方法一:修改配置文件
1.#修改配置文件
vim /usr/local/nginx/conf/nginx.conf
```handlebars
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; #添加,關(guān)閉版本號
......
}
2.#重啟nginx
systemctl restart nginx
3.#查看版本是否被隱藏
curl -I http://192.168.80.130

方法二: 修改源碼文件,重新編譯安裝
可以自定義版本號,可以讓人迷惑
1. #切換至nginx安裝包所在目錄 cd /opt/ 2. #停止nginx服務(wù) systemctl stop nginx.service 3. #切換至安裝目錄 cd nginx-1.12.0/ 4. #切換至內(nèi)核目錄 cd src/core/ 5. #進入配置文件 vim nginx.h ? #define NGINX_VERSION "老鐵" #define NGINX_VER "666/" NGINX_VERSION ? 6. #切換至文件目錄 cd ../../ ? 7. #編譯 ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module ? 8. #安裝 make && make install -j4 ? 9. #將配置文件下的之前關(guān)閉版本信息開啟 vim /usr/local/nginx/conf/nginx.conf server_tokens on; ? 10. #重啟nginx systemctl restart nginx ? 11. #查看版本信息 curl -I http://192.168.59.118 ?
修改用戶與組
1. #修改配置文件 vim /usr/local/nginx/conf/nginx.conf ? user dayu dayu; #取消注釋,修改用戶為 dayu ,組為 dayu ? 2. #創(chuàng)建非登錄用戶 useradd -s /sbin/nologin dayu ? 3. #重啟服務(wù) systemctl restart nginx ? 4. #查看是否修改成功 ps aux | grep nginx



緩存時間
當nginx將網(wǎng)頁數(shù)據(jù)返回給客戶端后,可設(shè)置緩存時間,以方便在日后進行相同內(nèi)容的請求時直接返回,避免重復(fù)請求,加快了訪問速度一般針對靜態(tài)網(wǎng)頁設(shè)置,對動態(tài)網(wǎng)頁不設(shè)置緩存時間。
1. #修改配置文件
vim /usr/local/nginx/conf/nginx.conf
#添加以下內(nèi)容
location ~ \.(jpg|png|bmp|gif)$ {
root html;
expires 1d;
}
?
?
2. #查看是否有語法錯誤
nginx -t
?
3. #重啟服務(wù)
systemctl restart nginx.service
?
4.#在網(wǎng)頁中查看服務(wù)
http://192.168.80.130/good.jpg
?
Cahce-Control:max-age=86400 表示緩存時間是 86400 秒。
也就是緩存一天的時間,一天之內(nèi)瀏覽器訪問這個頁面,都是用緩存中的數(shù)據(jù),
而不需要向 Nginx 服務(wù)器重新發(fā)出請求,減少了服務(wù)器的使用帶寬。

日志分割
隨著Nginx運行時間的增加,產(chǎn)生的日志也會逐漸增加,為了方便掌握Nginx的運行狀態(tài),需要時刻關(guān)注Nginx日志文件。太大的日志文件對監(jiān)控是一個大災(zāi)難,不便于分析排查,需要定期的進行日志文件的切割。
1. #寫腳本
vim /usr/local/nginx/nginx_log.sh
?
#!/bin/bash
#this is for divide nginx log
d=$(date +%F -d -1day) #顯示前一天的時間
path="/var/log/nginx"
pid="/usr/local/nginx/logs/nginx.pid"
?
[ -d $path ] ||mkdir -p $path #創(chuàng)建日志文件目錄
mv /usr/local/nginx/logs/access.log ${path}/www.yxp.com-$d #移動并重命名日志文件
kill -USR1 $(cat $pid) #重建新日志文件
find $path -mtime +30 -delete #刪除30天之前的日志文件
?
2. #賦予權(quán)限
chmod +x /usr/local/nginx/nginx_log.sh
?
3. #計劃任務(wù)
[root@localhost nginx]#crontab -e
?
30 1 * * * /usr/local/nginx/nginx_log.sh


配置Nginx實現(xiàn)連接超時
HTTP有一個KeepAlive模式,它告訴web服務(wù)器在處理完一個請求后保持這個TCP連接的打開狀態(tài)。若接收到來自同一客戶 端的其它請求,服務(wù)端會利用這個未被關(guān)閉的連接,而不需要再建立一個連接。
KeepAlive在一段時間內(nèi) 保持打開狀態(tài),它們會在這段時間內(nèi)占用資源。占用過多就會影響性能。
vim /usr/ local/nginx/conf/nginx. conf
http {
......
keepalive_ timeout 65 180;
client header timeout 80;
client_ body_ timeout 80;
......
}
systemctl restart nginxkeepalive_ timeout
- 指定KeepAlive的超時時間(timeout) 。指定每個TCP連接最多可以保持多長時間,服務(wù)器將會在這個時間后關(guān)閉連接。
- Nginx的默認值是65秒,有些瀏覽器最多只保持60秒,所以可以設(shè)定為60秒。若將它設(shè)置為0,就禁止了keepalive 連接。
- 第二個參數(shù)(可選的)指定了在響應(yīng)頭Keep-Alive: timeout=t ime中的time值。這個頭能夠讓一 些瀏覽器主動關(guān)閉連接,這樣服務(wù)器就不必去關(guān)閉連接了。沒有這個參數(shù),Nginx 不會發(fā)送Keep- Alive 響應(yīng)頭。
client_ header_ timeout
客戶端向服務(wù)端發(fā)送-一個完整的request header 的超時時間。如果客戶端在指定時間內(nèi)沒有發(fā)送一個完整的request header, Nginx返回HTTP 408 (Request Timed Out) 。
client_ body_ timeout
指定客戶端與服務(wù)端建立連接后發(fā)送requestbody的超時時間。如果客戶端在指定時間內(nèi)沒有發(fā)送任何內(nèi)容,Nginx返回HTTP 408 (Request Timed Out )。


更改Nginx運行進程數(shù)
在高并發(fā)場景,需要啟動更多的Nginx進程以保證快速響應(yīng),以處理用戶的請求,避免造成阻塞
更改進程數(shù)的配置方法
修改配置文件,修改進程配置參數(shù)
修改配置文件的worker_processes參數(shù)
- 一般設(shè)為CPU的個數(shù)或者核數(shù)
- 在高并發(fā)的情況下可設(shè)置為CPU個數(shù)或者核數(shù)的2倍
增加進程數(shù),可減少系統(tǒng)的開銷,提升服務(wù)速度
使用ps aux查看運行進程數(shù)的變化情況
[root@www conf]# cat /proc/cpuinfo | grep -c "physical" 4 [root@www conf]# vi nginx.conf worker_ processes 4; [root@www conf]# systemctl restart nginx [root@www conf]# ps aux | grep nginx
默認情況,Nginx的多個進程可能跑在一 個CPU上,可以分配不同的進程給不同的CPU處理,充分利用硬件多核多CPU。
在一臺4核物理服務(wù)器,進行配置,將進程進行分配。
[root@www conf]# vi nginx.conf worker_ processes 4; worker_ cpu_ affinity 0001 0010 0100 1000; 1代表CPU的位置



配置Nginx實現(xiàn)網(wǎng)頁優(yōu)化壓縮功能
- Nginx的ngx_http_ gzip_module壓縮模塊提供對文件內(nèi)容壓縮的功能
- 允許Nginx服務(wù)器將輸出內(nèi)容在發(fā)送客戶端之前進行壓縮,以節(jié)約網(wǎng)站帶寬,提升用戶的訪問體驗,默認已經(jīng)安裝
- 可在配置文件中加入相應(yīng)的壓縮功能參數(shù)對壓縮性能進行優(yōu)化
壓縮功能參數(shù)
1. #修改配置文件 gzip on; #取消注釋,開啟gzip壓縮功能 gzip_min_length 1k; #最小壓縮文件大小 gzip_buffers 4 16k; #壓縮緩沖區(qū),大小為4個16k緩沖區(qū) gzip_http_version 1.1; #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0) gzip_comp_level 6; #壓縮比率 gzip_vary on; #支持前端緩存服務(wù)器存儲壓縮頁面 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; #壓縮類型,表示哪些網(wǎng)頁文檔啟用壓縮功能 ? 2. #重啟服務(wù) systemctl restart nginx.service ? ? 3. #網(wǎng)頁查看 http://192.168.59.118/game.png




配置防盜鏈
在企業(yè)網(wǎng)站服務(wù)中,一般都要配置防盜鏈功能,以避免網(wǎng)站內(nèi)容被非法盜用,造成經(jīng)濟損失,也避免了不必要的帶寬浪費。
Nginx 的防盜鏈功能也非常強大,在默認情況下,只需要進行很簡單的配置,即可實現(xiàn)防盜鏈處理。
vim /usr/ local/nginx/conf/nginx. conf
http {
......
server {
......
location ~* \. (jpglgiflswf)$ {
valid_ referers none blocked * . kgc. com kgc . com;
if ( $invalid referer ) {
rewrite ^/ http: I /www. kgc. com/error。pngi
#return 403;
}
}
......
}
}~* \. (jpgIgifIswf)$ :這段正則表達式表示匹配不區(qū)分大小寫,以.jpg或.gif 或.swf結(jié)尾的文件:
valid_ referers :設(shè)置信任的網(wǎng)站,可以正常使用圖片:
none:允許沒有http_refer的請求訪問資源(根據(jù)Referer的定義,它的作用是指示一個請求是從哪里鏈接過來的,如果直接在瀏覽器的地址欄中輸入一個資源的URL地址,那么這種請求是不會包含Referer 字段的),如http:/ /www.dayu.com/ game.jpg
我們使用http://www. dayu.com訪問顯示的圖片,可以理解成http://www. dayu.com/game.jpg這個請求是從http://www. dayu.com這個鏈接過來的。
blocked: 允許不是http://開頭的, 不帶協(xié)議的請求訪問資源;
*. dayu. com: 只允許來自指定域名的請求訪問資源,如http://www. dayu.com
if語句:如果鏈接的來源域名不在valid_ referers所列出的列表中,$invalid_ referer為true, 則執(zhí)行后面的操作,即進行重寫或返回403 頁面。


第二臺機器配置內(nèi)容:





現(xiàn)在還是可以正常顯示的

現(xiàn)在防盜圖出現(xiàn)
補充:面試題:用過哪些nginx的模塊和做過哪些優(yōu)化
gzip ### 網(wǎng)站數(shù)據(jù)壓縮
rewrite ### 地址重寫
stub_ status ### 統(tǒng)計nginx服務(wù)狀態(tài)
ssl 支持https, ### 得先用openss1或者TLS工具生成相關(guān)證書和私鑰文件。再在ssl模塊配置中調(diào)用證書和私鑰
upstream ### 使用nginx做反向代理web群集,定義群集服務(wù)器池
stream ### 用于定義4層反向代理的
auth_ basic ### 用戶認證
fastcgi ### 轉(zhuǎn)發(fā)請求給php
--with-模塊名 ### 開啟模塊
--without-模塊名 ### 禁用模塊
隱藏版本號 、壓縮、緩存、防盜鏈、連續(xù)保持、優(yōu)化工作進程和進程連接數(shù)、日志分割、反向代理
總結(jié)
到此這篇關(guān)于Nginx防盜鏈與服務(wù)優(yōu)化配置的文章就介紹到這了,更多相關(guān)Nginx防盜鏈與服務(wù)優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx通過用戶IP獲取所在國家及地理位置的實現(xiàn)方法
Nginx是一款高性能、輕量級的Web服務(wù)器和反向代理服務(wù)器,今天講解Nginx十分常用的功能之一,通過IP獲取用戶所在的國家,一般廣泛應(yīng)用在各類需要定位的網(wǎng)站上面,來定位用戶首次訪問的國家,通過IP解析庫GeoLite2-Country來實現(xiàn)功能,需要的朋友可以參考下2023-10-10
nginx 反向代理之 proxy_pass的實現(xiàn)
這篇文章主要介紹了nginx 反向代理之 proxy_pass的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
nginx刷新頁面出現(xiàn)404解決方案(親測有效)
本文主要介紹了nginx刷新頁面出現(xiàn)404解決方案,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
Linux下Tomcat+Nginx服務(wù)器環(huán)境安裝配置的簡明教程
以Nginx作為反向代理再用Tomcat驅(qū)動Java Web程序是當今很流行的一種方案,那么這里我們就著眼于最基本的生產(chǎn)環(huán)境搭建,一起來看一下Linux下Tomcat+Nginx服務(wù)器環(huán)境安裝配置的簡明教程2016-05-05

