您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Nginx防盜鏈與服務優化配置的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
方法一:curl命令
可以在 CentOS 中使用命令 curl -I http://192.168.80.130 顯示響應報文首部信息。
curl -I http://192.168.80.130
方法二:在網頁中查看
1. #切換至html目錄,拖一個圖片進去
cd /usr/local/nginx/html
2. #在網頁中查看
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; #添加,關閉版本號 ...... } 2.#重啟nginx systemctl restart nginx 3.#查看版本是否被隱藏 curl -I http://192.168.80.130
方法二: 修改源碼文件,重新編譯安裝
可以自定義版本號,可以讓人迷惑
1. #切換至nginx安裝包所在目錄 cd /opt/ 2. #停止nginx服務 systemctl stop nginx.service 3. #切換至安裝目錄 cd nginx-1.12.0/ 4. #切換至內核目錄 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. #將配置文件下的之前關閉版本信息開啟 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. #創建非登錄用戶 useradd -s /sbin/nologin dayu 3. #重啟服務 systemctl restart nginx 4. #查看是否修改成功 ps aux | grep nginx
當nginx將網頁數據返回給客戶端后,可設置緩存時間,以方便在日后進行相同內容的請求時直接返回,避免重復請求,加快了訪問速度一般針對靜態網頁設置,對動態網頁不設置緩存時間。
1. #修改配置文件 vim /usr/local/nginx/conf/nginx.conf #添加以下內容 location ~ \.(jpg|png|bmp|gif)$ { root html; expires 1d; } 2. #查看是否有語法錯誤 nginx -t 3. #重啟服務 systemctl restart nginx.service 4.#在網頁中查看服務 http://192.168.80.130/good.jpg Cahce-Control:max-age=86400 表示緩存時間是 86400 秒。 也就是緩存一天的時間,一天之內瀏覽器訪問這個頁面,都是用緩存中的數據, 而不需要向 Nginx 服務器重新發出請求,減少了服務器的使用帶寬。
隨著Nginx運行時間的增加,產生的日志也會逐漸增加,為了方便掌握Nginx的運行狀態,需要時刻關注Nginx日志文件。太大的日志文件對監控是一個大災難,不便于分析排查,需要定期的進行日志文件的切割。
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 #創建日志文件目錄 mv /usr/local/nginx/logs/access.log ${path}/www.yxp.com-$d #移動并重命名日志文件 kill -USR1 $(cat $pid) #重建新日志文件 find $path -mtime +30 -delete #刪除30天之前的日志文件 2. #賦予權限 chmod +x /usr/local/nginx/nginx_log.sh 3. #計劃任務 [root@localhost nginx]#crontab -e 30 1 * * * /usr/local/nginx/nginx_log.sh
HTTP有一個KeepAlive模式,它告訴web服務器在處理完一個請求后保持這個TCP連接的打開狀態。若接收到來自同一客戶 端的其它請求,服務端會利用這個未被關閉的連接,而不需要再建立一個連接。
KeepAlive在一段時間內 保持打開狀態,它們會在這段時間內占用資源。占用過多就會影響性能。
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的超時時間(timeout) 。指定每個TCP連接最多可以保持多長時間,服務器將會在這個時間后關閉連接。
Nginx的默認值是65秒,有些瀏覽器最多只保持60秒,所以可以設定為60秒。若將它設置為0,就禁止了keepalive 連接。
第二個參數(可選的)指定了在響應頭Keep-Alive: timeout=t ime中的time值。這個頭能夠讓一 些瀏覽器主動關閉連接,這樣服務器就不必去關閉連接了。沒有這個參數,Nginx 不會發送Keep- Alive 響應頭。
client_ header_ timeout
客戶端向服務端發送-一個完整的request header 的超時時間。如果客戶端在指定時間內沒有發送一個完整的request header, Nginx返回HTTP 408 (Request Timed Out) 。
client_ body_ timeout
指定客戶端與服務端建立連接后發送requestbody的超時時間。如果客戶端在指定時間內沒有發送任何內容,Nginx返回HTTP 408 (Request Timed Out )。
在高并發場景,需要啟動更多的Nginx進程以保證快速響應,以處理用戶的請求,避免造成阻塞
更改進程數的配置方法
修改配置文件,修改進程配置參數
修改配置文件的worker_processes參數
一般設為CPU的個數或者核數
在高并發的情況下可設置為CPU個數或者核數的2倍
增加進程數,可減少系統的開銷,提升服務速度
使用ps aux查看運行進程數的變化情況
[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核物理服務器,進行配置,將進程進行分配。
[root@www conf]# vi nginx.conf worker_ processes 4; worker_ cpu_ affinity 0001 0010 0100 1000; 1代表CPU的位置
Nginx的ngx_http_ gzip_module壓縮模塊提供對文件內容壓縮的功能
允許Nginx服務器將輸出內容在發送客戶端之前進行壓縮,以節約網站帶寬,提升用戶的訪問體驗,默認已經安裝
可在配置文件中加入相應的壓縮功能參數對壓縮性能進行優化
1. #修改配置文件 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; #壓縮類型,表示哪些網頁文檔啟用壓縮功能 2. #重啟服務 systemctl restart nginx.service 3. #網頁查看 http://192.168.59.118/game.png
在企業網站服務中,一般都要配置防盜鏈功能,以避免網站內容被非法盜用,造成經濟損失,也避免了不必要的帶寬浪費。
Nginx 的防盜鏈功能也非常強大,在默認情況下,只需要進行很簡單的配置,即可實現防盜鏈處理。
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)$ :這段正則表達式表示匹配不區分大小寫,以.jpg或.gif 或.swf結尾的文件:
valid_ referers :設置信任的網站,可以正常使用圖片:
none:允許沒有http_refer的請求訪問資源(根據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://開頭的, 不帶協議的請求訪問資源;
*. dayu. com: 只允許來自指定域名的請求訪問資源,如http://www. dayu.com
if語句:如果鏈接的來源域名不在valid_ referers所列出的列表中,$invalid_ referer為true, 則執行后面的操作,即進行重寫或返回403 頁面。
第二臺機器配置內容:
現在還是可以正常顯示的
現在防盜圖出現
gzip ### 網站數據壓縮
rewrite ### 地址重寫
stub_ status ### 統計nginx服務狀態
ssl 支持https, ### 得先用openss1或者TLS工具生成相關證書和私鑰文件。再在ssl模塊配置中調用證書和私鑰
upstream ### 使用nginx做反向代理web群集,定義群集服務器池
stream ### 用于定義4層反向代理的
auth_ basic ### 用戶認證
fastcgi ### 轉發請求給php
--with-模塊名 ### 開啟模塊
--without-模塊名 ### 禁用模塊
隱藏版本號 、壓縮、緩存、防盜鏈、連續保持、優化工作進程和進程連接數、日志分割、反向代理
感謝各位的閱讀!關于“Nginx防盜鏈與服務優化配置的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。