Nginx的優(yōu)化、安全與防盜鏈實(shí)例詳解
1.Nginx的頁(yè)面優(yōu)化
1.1 Nginx的網(wǎng)頁(yè)壓縮
在Nginx的ngx_http_gzip_module壓縮模塊提供對(duì)文件內(nèi)容壓縮的功能。進(jìn)行相關(guān)的配置修改,就能實(shí)現(xiàn)Nginx頁(yè)面的壓縮,達(dá)到節(jié)約帶寬,提升用戶(hù)訪問(wèn)速度
vim /usr/local/nginx/conf/nginx.conf http { .......... gzip on; gzip_min_length 1k; gzip_buffers 4 64k; 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; }
重啟服務(wù),進(jìn)行訪問(wèn)測(cè)試:
1.2 配置Nginx的圖片緩存
當(dāng)Nginx將網(wǎng)頁(yè)數(shù)據(jù)返回給客戶(hù)端后,可設(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í)間。
vim /usr/local/nginx/conf/nginx.conf http { ................. location ~* \.(gif|jpg|jepg|bmp|ico)$ { root html; expires 1d; } }
重啟服務(wù),測(cè)試訪問(wèn):
1.3 Nginx的連接超時(shí)設(shè)置
- HTTP有一個(gè)KeepAlive模式,它告訴web服務(wù)器在處理完一個(gè)請(qǐng)求后保持這個(gè)TCP連接的打開(kāi)狀態(tài)。若接收到來(lái)自同一客戶(hù)端的其它請(qǐng)求,服務(wù)端會(huì)利用這個(gè)未被關(guān)閉的連接,而不需要再建立一個(gè)連接。
- KeepAlive 在一段時(shí)間內(nèi)保持打開(kāi)狀態(tài),它們會(huì)在這段時(shí)間內(nèi)占用資源。占用過(guò)多就會(huì)影響性能。
- 在企業(yè)網(wǎng)站中,為了避免同一個(gè)客戶(hù)長(zhǎng)時(shí)間占用連接,造成資源浪費(fèi),可設(shè)置相應(yīng)的連接超時(shí)參數(shù),實(shí)現(xiàn)控制連接訪問(wèn)時(shí)間。可以修改配置文件 nginx.conf,設(shè)置 keepalive_timeout超時(shí)。
vim /usr/local/nginx/conf/nginx.conf http { ...... keepalive_timeout 65 180; //設(shè)置連接超時(shí)時(shí)間 client_header_timeout 80; client_body_timeout 80; ...... }
- 指定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)頭。
重啟服務(wù),訪問(wèn)測(cè)試:
1.4 Nginx的并發(fā)設(shè)置
在高并發(fā)場(chǎng)景,需要啟動(dòng)更多的Nginx進(jìn)程以保證快速響應(yīng),以處理用戶(hù)的請(qǐng)求,避免造成阻塞。
查看cpu的核心數(shù),根據(jù)核心數(shù)來(lái)設(shè)置工作進(jìn)程數(shù)
#1、查看cpu核數(shù) cat /proc/cpuinfo |grep processor|wc -l 或 cat /proc/cpuinfo |grep -c processor 或 cat /proc/cpuinfo | grep -c "physical id"
[root@localhost html]#ps aux | grep nginx
修改工作進(jìn)程核心數(shù) :
vim /usr/local/nginx/conf/nginx.conf worker_processes 2; #修改為與CPU核數(shù)相同 worker_cpu_affinity 01 10; #設(shè)置每個(gè)進(jìn)程由不同cpu處理,進(jìn)程數(shù)配為4時(shí)0001 0010 0100 1000 ?
測(cè)試結(jié)果:
[root@localhost html]#ps aux | grep nginx
2.Nginx的頁(yè)面安全
——隱藏Nginx的版本號(hào)
2.1 查看Nginx版本的方式
方式一:curl模擬訪問(wèn)獲取
[root@localhost ~]#curl -I 192.168.73.105
方式二:瀏覽器訪問(wèn)查看
火狐訪問(wèn)瀏覽器 ,F(xiàn)12查看網(wǎng)絡(luò)信息
2.2 隱藏版本號(hào)
方法一:修改配置文件,關(guān)閉版本號(hào)
vim /usr/local/nginx/conf/nginx.conf http { include mime.types; default_type application/octet-stream; server_tokens off; #添加這一行,關(guān)閉版本號(hào) ...... }
測(cè)試結(jié)果:
方法二:修改源碼文件中的版本號(hào),重新編譯安裝
cd /opt/nginx-1.12.0/src/core/ #修改前進(jìn)行備份 cp nginx.h nginx.h.bak vimn ginx.h #define NGINX_VERSION "1.12.0" #define NGINX_VER "nginx/" NGINX_VERSION
修改完配置后切換到Nginx軟件包中,進(jìn)行重新編譯安裝 :
cd /opt/nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make -J 2 && make install
再次修改主配置文件,打開(kāi)版本號(hào)顯示 :
vim /usr/local/nginx/conf/nginx.conf http { include mime.types; default_type application/octet-stream; server_tokens on; ...... }
重啟服務(wù),進(jìn)行測(cè)試:
3.Nginx的日志分割
Nginx與apache的不同之處,就是Nginx本身并為設(shè)計(jì)日志分割工具,所以需要運(yùn)維人員進(jìn)行腳本編寫(xiě)來(lái)實(shí)現(xiàn)日志分割
編寫(xiě)日志分割腳本
cd /opt vim cutlogs.sh #!/bin/bash #nginx 分割日志腳本 #用變量day獲取前天日期的時(shí)間記錄 day=$(date -d "-1 day" "+%Y%m%d") #獲取日志的目錄 logs_path="/var/log/nginx" #獲取運(yùn)行時(shí)nginx的進(jìn)程號(hào) pid_path="/usr/local/nginx/logs/nginx.pid" #二元表達(dá)式,如果前面不成立則執(zhí)行后面的式子 #前面判斷該目錄是否存在,后面則表示不存在則自動(dòng)創(chuàng)建該目錄 [ -d $logs_path ] || mkdir -p $logs_path #將生成的日志按照date生成的時(shí)間格式改名并移動(dòng)到指定的路徑中保存 mv /usr/local/nginx/logs/access.log ${logs_path}/access.log-$day #重新生成一個(gè)新的日志 kill -USR1 $(cat $pid_path) #日志文件清理,將30天前的日志進(jìn)行清除 find $logs_path -mtime +30 -exec rm -rf {} \ ;
2. 執(zhí)行腳本進(jìn)行測(cè)試
3. 將日志腳本添加至計(jì)劃性任務(wù)
[root@localhost opt]#vim cutlogs.sh [root@localhost opt]#chmod +x cutlogs.sh [root@localhost opt]#crontab -e 0 1 * * * /opt/cutlogs.sh
4.Nginx防盜鏈
4.1 盜鏈的過(guò)程
Nginx盜鏈的過(guò)程與apache一致,均是通過(guò)網(wǎng)頁(yè)瀏覽,將網(wǎng)站圖片重定向到自己的網(wǎng)站上
http://www.dbjr.com.cn/article/264450.htm
4.2 Nginx防盜鏈的設(shè)置
修改主配配置文件,添加防盜鏈設(shè)置
vim /usr/local/nginx/conf/nginx.conf http { ........... server{ ........... location ~* \.(jpg|gif|swf)$ { root html; expires 1d; valid_referers none blocked *.test.com test.com; if ( $invalid_referer ) { rewrite ^/ http://www.test.com/error.png; } } ............ } ............... }
在 /var/local/nginx/html 下放置好error.png
進(jìn)行盜鏈測(cè)試
盜鏈主機(jī)html網(wǎng)頁(yè)設(shè)置:
第三方用戶(hù)訪問(wèn)盜鏈主機(jī):
訪問(wèn)前設(shè)置:
1.關(guān)閉防火墻工具firewalld和selinux
2.將域名對(duì)應(yīng)的IP添加到 /etc/hosts 中
第三方訪問(wèn)原主機(jī) :
5.fpm參數(shù)優(yōu)化
Nginx的PHP解析功能實(shí)現(xiàn)如果是交由FPM處理的,為了提高PHP的處理速度,可對(duì)FPM模塊進(jìn)行參數(shù)的調(diào)整。
根據(jù)服務(wù)器的內(nèi)存與服務(wù)負(fù)載,調(diào)整FPM模塊參數(shù)。
vim /usr/local/php/etc/php-fpm.conf pid = run/php-fpm.pid ? vim /usr/local/php/etc/php-fpm.d/www.conf --96行-- pm = dynamic #fpm進(jìn)程啟動(dòng)方式,動(dòng)態(tài)的 --107行-- pm.max_children=20 #fpm進(jìn)程啟動(dòng)的最大進(jìn)程數(shù) --112行-- pm.start_servers = 5 #動(dòng)態(tài)方式下啟動(dòng)時(shí)默認(rèn)開(kāi)啟的進(jìn)程數(shù),在最小和最大之間 --117行-- pm.min_spare_servers = 2 #動(dòng)態(tài)方式下最小空閑進(jìn)程數(shù) --122行-- pm.max_spare_servers = 8 #動(dòng)態(tài)方式下最大空閑進(jìn)程數(shù) ? ? kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` #重啟php-fpm netstat -anpt | grep 9000
總結(jié)
到此這篇關(guān)于Nginx的優(yōu)化、安全與防盜鏈的文章就介紹到這了,更多相關(guān)Nginx優(yōu)化 安全與防盜鏈內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx proxy_redirect的作用及說(shuō)明
這篇文章主要介紹了nginx proxy_redirect的作用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Nginx部署vue項(xiàng)目和配置代理的問(wèn)題解析
這篇文章主要介紹了Nginx部署vue項(xiàng)目和配置代理,需本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,要的朋友可以參考下2021-08-08利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器
本文主要介紹了利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Linux中Nginx的防盜鏈和優(yōu)化的實(shí)現(xiàn)代碼
今天是周末小編在值班哈,很開(kāi)森,工作使我快樂(lè),本文重點(diǎn)給大家介紹Linux中Nginx的防盜鏈和優(yōu)化問(wèn)題及實(shí)現(xiàn)代碼,需要的朋友跟隨小編一起看看吧2021-06-06使用Nginx服務(wù)器如何實(shí)現(xiàn)動(dòng)靜分離和反向代理
這篇文章主要介紹了使用Nginx服務(wù)器如何實(shí)現(xiàn)動(dòng)靜分離和反向代理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05在Nginx服務(wù)器上配置Google反向代理的基本方法
這篇文章主要介紹了在Nginx服務(wù)器上配置Google反向代理的基本方法,文中使用到了SSL來(lái)加密反向代理,需要的朋友可以參考下2015-12-12