Nginx防盜鏈與服務(wù)優(yōu)化配置的全過(guò)程
隱藏nginx版本號(hào)
查看版本號(hào)
方法一:curl命令
可以在 CentOS 中使用命令 curl -I http://192.168.80.130 顯示響應(yīng)報(bào)文首部信息。
curl -I http://192.168.80.130
方法二:在網(wǎng)頁(yè)中查看
1. #切換至html目錄,拖一個(gè)圖片進(jìn)去
cd /usr/local/nginx/html
?
2. #在網(wǎng)頁(yè)中查看
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)閉版本號(hào) ...... } 2.#重啟nginx systemctl restart nginx 3.#查看版本是否被隱藏 curl -I http://192.168.80.130
方法二: 修改源碼文件,重新編譯安裝
可以自定義版本號(hào),可以讓人迷惑
1. #切換至nginx安裝包所在目錄 cd /opt/ 2. #停止nginx服務(wù) systemctl stop nginx.service 3. #切換至安裝目錄 cd nginx-1.12.0/ 4. #切換至內(nèi)核目錄 cd src/core/ 5. #進(jìn)入配置文件 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
緩存時(shí)間
當(dāng)nginx將網(wǎng)頁(yè)數(shù)據(jù)返回給客戶端后,可設(shè)置緩存時(shí)間,以方便在日后進(jìn)行相同內(nèi)容的請(qǐng)求時(shí)直接返回,避免重復(fù)請(qǐng)求,加快了訪問(wèn)速度一般針對(duì)靜態(tài)網(wǎng)頁(yè)設(shè)置,對(duì)動(dòng)態(tài)網(wǎng)頁(yè)不設(shè)置緩存時(shí)間。
1. #修改配置文件 vim /usr/local/nginx/conf/nginx.conf #添加以下內(nèi)容 location ~ \.(jpg|png|bmp|gif)$ { root html; expires 1d; } ? ? 2. #查看是否有語(yǔ)法錯(cuò)誤 nginx -t ? 3. #重啟服務(wù) systemctl restart nginx.service ? 4.#在網(wǎng)頁(yè)中查看服務(wù) http://192.168.80.130/good.jpg ? Cahce-Control:max-age=86400 表示緩存時(shí)間是 86400 秒。 也就是緩存一天的時(shí)間,一天之內(nèi)瀏覽器訪問(wèn)這個(gè)頁(yè)面,都是用緩存中的數(shù)據(jù), 而不需要向 Nginx 服務(wù)器重新發(fā)出請(qǐng)求,減少了服務(wù)器的使用帶寬。
日志分割
隨著Nginx運(yùn)行時(shí)間的增加,產(chǎn)生的日志也會(huì)逐漸增加,為了方便掌握Nginx的運(yùn)行狀態(tài),需要時(shí)刻關(guān)注Nginx日志文件。太大的日志文件對(duì)監(jiān)控是一個(gè)大災(zāi)難,不便于分析排查,需要定期的進(jìn)行日志文件的切割。
1. #寫腳本 vim /usr/local/nginx/nginx_log.sh ? #!/bin/bash #this is for divide nginx log d=$(date +%F -d -1day) #顯示前一天的時(shí)間 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 #移動(dòng)并重命名日志文件 kill -USR1 $(cat $pid) #重建新日志文件 find $path -mtime +30 -delete #刪除30天之前的日志文件 ? 2. #賦予權(quán)限 chmod +x /usr/local/nginx/nginx_log.sh ? 3. #計(jì)劃任務(wù) [root@localhost nginx]#crontab -e ? 30 1 * * * /usr/local/nginx/nginx_log.sh
配置Nginx實(shí)現(xiàn)連接超時(shí)
HTTP有一個(gè)KeepAlive模式,它告訴web服務(wù)器在處理完一個(gè)請(qǐng)求后保持這個(gè)TCP連接的打開狀態(tài)。若接收到來(lái)自同一客戶 端的其它請(qǐng)求,服務(wù)端會(huì)利用這個(gè)未被關(guān)閉的連接,而不需要再建立一個(gè)連接。
KeepAlive在一段時(shí)間內(nèi) 保持打開狀態(tài),它們會(huì)在這段時(shí)間內(nèi)占用資源。占用過(guò)多就會(huì)影響性能。
vim /usr/ local/nginx/conf/nginx. conf http { ...... keepalive_ timeout 65 180; client header timeout 80; client_ body_ timeout 80; ...... } systemctl restart nginx
keepalive_ timeout
- 指定KeepAlive的超時(shí)時(shí)間(timeout) 。指定每個(gè)TCP連接最多可以保持多長(zhǎng)時(shí)間,服務(wù)器將會(huì)在這個(gè)時(shí)間后關(guān)閉連接。
- Nginx的默認(rèn)值是65秒,有些瀏覽器最多只保持60秒,所以可以設(shè)定為60秒。若將它設(shè)置為0,就禁止了keepalive 連接。
- 第二個(gè)參數(shù)(可選的)指定了在響應(yīng)頭Keep-Alive: timeout=t ime中的time值。這個(gè)頭能夠讓一 些瀏覽器主動(dòng)關(guān)閉連接,這樣服務(wù)器就不必去關(guān)閉連接了。沒(méi)有這個(gè)參數(shù),Nginx 不會(huì)發(fā)送Keep- Alive 響應(yīng)頭。
client_ header_ timeout
客戶端向服務(wù)端發(fā)送-一個(gè)完整的request header 的超時(shí)時(shí)間。如果客戶端在指定時(shí)間內(nèi)沒(méi)有發(fā)送一個(gè)完整的request header, Nginx返回HTTP 408 (Request Timed Out) 。
client_ body_ timeout
指定客戶端與服務(wù)端建立連接后發(fā)送requestbody的超時(shí)時(shí)間。如果客戶端在指定時(shí)間內(nèi)沒(méi)有發(fā)送任何內(nèi)容,Nginx返回HTTP 408 (Request Timed Out )。
更改Nginx運(yùn)行進(jìn)程數(shù)
在高并發(fā)場(chǎng)景,需要啟動(dòng)更多的Nginx進(jìn)程以保證快速響應(yīng),以處理用戶的請(qǐng)求,避免造成阻塞
更改進(jìn)程數(shù)的配置方法
修改配置文件,修改進(jìn)程配置參數(shù)
修改配置文件的worker_processes參數(shù)
- 一般設(shè)為CPU的個(gè)數(shù)或者核數(shù)
- 在高并發(fā)的情況下可設(shè)置為CPU個(gè)數(shù)或者核數(shù)的2倍
增加進(jìn)程數(shù),可減少系統(tǒng)的開銷,提升服務(wù)速度
使用ps aux查看運(yùn)行進(jìn)程數(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
默認(rèn)情況,Nginx的多個(gè)進(jìn)程可能跑在一 個(gè)CPU上,可以分配不同的進(jìn)程給不同的CPU處理,充分利用硬件多核多CPU。
在一臺(tái)4核物理服務(wù)器,進(jìn)行配置,將進(jìn)程進(jìn)行分配。
[root@www conf]# vi nginx.conf worker_ processes 4; worker_ cpu_ affinity 0001 0010 0100 1000; 1代表CPU的位置
配置Nginx實(shí)現(xiàn)網(wǎng)頁(yè)優(yōu)化壓縮功能
- Nginx的ngx_http_ gzip_module壓縮模塊提供對(duì)文件內(nèi)容壓縮的功能
- 允許Nginx服務(wù)器將輸出內(nèi)容在發(fā)送客戶端之前進(jìn)行壓縮,以節(jié)約網(wǎng)站帶寬,提升用戶的訪問(wèn)體驗(yàn),默認(rèn)已經(jīng)安裝
- 可在配置文件中加入相應(yīng)的壓縮功能參數(shù)對(duì)壓縮性能進(jìn)行優(yōu)化
壓縮功能參數(shù)
1. #修改配置文件 gzip on; #取消注釋,開啟gzip壓縮功能 gzip_min_length 1k; #最小壓縮文件大小 gzip_buffers 4 16k; #壓縮緩沖區(qū),大小為4個(gè)16k緩沖區(qū) gzip_http_version 1.1; #壓縮版本(默認(rèn)1.1,前端如果是squid2.5請(qǐng)使用1.0) gzip_comp_level 6; #壓縮比率 gzip_vary on; #支持前端緩存服務(wù)器存儲(chǔ)壓縮頁(yè)面 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)頁(yè)文檔啟用壓縮功能 ? 2. #重啟服務(wù) systemctl restart nginx.service ? ? 3. #網(wǎng)頁(yè)查看 http://192.168.59.118/game.png
配置防盜鏈
在企業(yè)網(wǎng)站服務(wù)中,一般都要配置防盜鏈功能,以避免網(wǎng)站內(nèi)容被非法盜用,造成經(jīng)濟(jì)損失,也避免了不必要的帶寬浪費(fèi)。
Nginx 的防盜鏈功能也非常強(qiáng)大,在默認(rèn)情況下,只需要進(jìn)行很簡(jiǎn)單的配置,即可實(shí)現(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)$ :這段正則表達(dá)式表示匹配不區(qū)分大小寫,以.jpg或.gif 或.swf結(jié)尾的文件:
valid_ referers :設(shè)置信任的網(wǎng)站,可以正常使用圖片:
none:允許沒(méi)有http_refer的請(qǐng)求訪問(wèn)資源(根據(jù)Referer的定義,它的作用是指示一個(gè)請(qǐng)求是從哪里鏈接過(guò)來(lái)的,如果直接在瀏覽器的地址欄中輸入一個(gè)資源的URL地址,那么這種請(qǐng)求是不會(huì)包含Referer 字段的),如http:/ /www.dayu.com/ game.jpg
我們使用http://www. dayu.com訪問(wèn)顯示的圖片,可以理解成http://www. dayu.com/game.jpg這個(gè)請(qǐng)求是從http://www. dayu.com這個(gè)鏈接過(guò)來(lái)的。
blocked: 允許不是http://開頭的, 不帶協(xié)議的請(qǐng)求訪問(wèn)資源;
*. dayu. com: 只允許來(lái)自指定域名的請(qǐng)求訪問(wèn)資源,如http://www. dayu.com
if語(yǔ)句:如果鏈接的來(lái)源域名不在valid_ referers所列出的列表中,$invalid_ referer為true, 則執(zhí)行后面的操作,即進(jìn)行重寫或返回403 頁(yè)面。
第二臺(tái)機(jī)器配置內(nèi)容:
現(xiàn)在還是可以正常顯示的
現(xiàn)在防盜圖出現(xiàn)
補(bǔ)充:面試題:用過(guò)哪些nginx的模塊和做過(guò)哪些優(yōu)化
gzip ### 網(wǎng)站數(shù)據(jù)壓縮
rewrite ### 地址重寫
stub_ status ### 統(tǒng)計(jì)nginx服務(wù)狀態(tài)
ssl 支持https, ### 得先用openss1或者TLS工具生成相關(guān)證書和私鑰文件。再在ssl模塊配置中調(diào)用證書和私鑰
upstream ### 使用nginx做反向代理web群集,定義群集服務(wù)器池
stream ### 用于定義4層反向代理的
auth_ basic ### 用戶認(rèn)證
fastcgi ### 轉(zhuǎn)發(fā)請(qǐng)求給php
--with-模塊名 ### 開啟模塊
--without-模塊名 ### 禁用模塊
隱藏版本號(hào) 、壓縮、緩存、防盜鏈、連續(xù)保持、優(yōu)化工作進(jìn)程和進(jìn)程連接數(shù)、日志分割、反向代理
總結(jié)
到此這篇關(guān)于Nginx防盜鏈與服務(wù)優(yōu)化配置的文章就介紹到這了,更多相關(guān)Nginx防盜鏈與服務(wù)優(yōu)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx實(shí)現(xiàn)負(fù)載均衡的項(xiàng)目實(shí)踐
在我們實(shí)際生產(chǎn)中,一臺(tái)服務(wù)器的處理能力、存儲(chǔ)空間是有限的,這時(shí)候就需要負(fù)載均衡,本文詳細(xì)的介紹了Nginx實(shí)現(xiàn)負(fù)載均衡的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2022-03-03Nginx四層負(fù)載均衡的實(shí)現(xiàn)示例
Nginx?不支持傳統(tǒng)的四層負(fù)載均衡,但可以通過(guò)stream模塊配合TCP實(shí)現(xiàn)類似的功能,本文主要介紹了Nginx四層負(fù)載均衡的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04Python的Bottle框架基本知識(shí)總結(jié)
這篇文章主要介紹了Python的Bottle框架基本知識(shí)總結(jié),本文翻譯自Bottle官方開發(fā)文檔,需要的朋友可以參考下2015-05-05nginx前端部署后,訪問(wèn)不到同一臺(tái)機(jī)器的后端問(wèn)題
這篇文章主要介紹了nginx前端部署后,訪問(wèn)不到同一臺(tái)機(jī)器的后端問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01nginx如何設(shè)置服務(wù)器響應(yīng)時(shí)間長(zhǎng)短
本文主要介紹了nginx如何設(shè)置服務(wù)器響應(yīng)時(shí)間長(zhǎng)短,主要介紹了兩種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09