時間:2022-10-11來源:系統城裝機大師作者:佚名
在Nginx的ngx_http_gzip_module壓縮模塊提供對文件內容壓縮的功能。進行相關的配置修改,就能實現Nginx頁面的壓縮,達到節約帶寬,提升用戶訪問速度
1 2 3 4 5 6 7 8 9 10 11 |
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 ; } |
重啟服務,進行訪問測試:
當Nginx將網頁數據返回給客戶端后,可設置緩存的時間,以方便在日后進行相同內容的請求時直接返回,避免重復請求,加快了訪問速度。
一般針對靜態網頁設置,對動態網頁不設置緩存時間。
1 2 3 4 5 6 7 8 |
vim /usr/local/nginx/conf/nginx .conf http { ................. location ~* \.(gif|jpg|jepg|bmp|ico)$ { root html; expires 1d; } } |
重啟服務,測試訪問:
1 2 3 4 5 6 7 8 |
vim /usr/local/nginx/conf/nginx .conf http { ...... keepalive_timeout 65 180; // 設置連接超時時間 client_header_timeout 80; client_body_timeout 80; ...... } |
重啟服務,訪問測試:
在高并發場景,需要啟動更多的Nginx進程以保證快速響應,以處理用戶的請求,避免造成阻塞。
查看cpu的核心數,根據核心數來設置工作進程數
1 2 3 4 5 6 |
#1、查看cpu核數 cat /proc/cpuinfo | grep processor| wc -l 或 cat /proc/cpuinfo | grep -c processor 或 cat /proc/cpuinfo | grep -c "physical id" |
1 | [root@localhost html] #ps aux | grep nginx |
修改工作進程核心數 :
1 2 3 4 |
vim /usr/local/nginx/conf/nginx .conf worker_processes 2; #修改為與CPU核數相同 worker_cpu_affinity 01 10; #設置每個進程由不同cpu處理,進程數配為4時0001 0010 0100 1000 ? |
測試結果:
1 | [root@localhost html] #ps aux | grep nginx |
——隱藏Nginx的版本號
1 | [root@localhost ~] #curl -I 192.168.73.105 |
火狐訪問瀏覽器 ,F12查看網絡信息
方法一:修改配置文件,關閉版本號
1 2 3 4 5 6 7 |
vim /usr/local/nginx/conf/nginx .conf http { include mime.types; default_type application /octet-stream ; server_tokens off; #添加這一行,關閉版本號 ...... } |
測試結果:
方法二:修改源碼文件中的版本號,重新編譯安裝
1 2 3 4 5 6 7 8 |
cd /opt/nginx-1 .12.0 /src/core/ #修改前進行備份 cp nginx.h nginx.h.bak vimn ginx.h #define NGINX_VERSION "1.12.0" #define NGINX_VER "nginx/" NGINX_VERSION |
修改完配置后切換到Nginx軟件包中,進行重新編譯安裝 :
1 2 3 4 |
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 |
再次修改主配置文件,打開版本號顯示 :
1 2 3 4 5 6 7 |
vim /usr/local/nginx/conf/nginx .conf http { include mime.types; default_type application /octet-stream ; server_tokens on; ...... } |
重啟服務,進行測試:
Nginx與apache的不同之處,就是Nginx本身并為設計日志分割工具,所以需要運維人員進行腳本編寫來實現日志分割
編寫日志分割腳本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
cd /opt vim cutlogs.sh #!/bin/bash #nginx 分割日志腳本 #用變量day獲取前天日期的時間記錄 day=$( date -d "-1 day" "+%Y%m%d" ) #獲取日志的目錄 logs_path= "/var/log/nginx" #獲取運行時nginx的進程號 pid_path= "/usr/local/nginx/logs/nginx.pid" #二元表達式,如果前面不成立則執行后面的式子 #前面判斷該目錄是否存在,后面則表示不存在則自動創建該目錄 [ -d $logs_path ] || mkdir -p $logs_path #將生成的日志按照date生成的時間格式改名并移動到指定的路徑中保存 mv /usr/local/nginx/logs/access .log ${logs_path} /access .log-$day #重新生成一個新的日志 kill -USR1 $( cat $pid_path) #日志文件清理,將30天前的日志進行清除 find $logs_path -mtime +30 - exec rm -rf {} \ ; |
2. 執行腳本進行測試
3. 將日志腳本添加至計劃性任務
1 2 3 4 |
[root@localhost opt] #vim cutlogs.sh [root@localhost opt] #chmod +x cutlogs.sh [root@localhost opt] #crontab -e 0 1 * * * /opt/cutlogs .sh |
Nginx盜鏈的過程與apache一致,均是通過網頁瀏覽,將網站圖片重定向到自己的網站上
https://www.jb51.net/article/264450.htm
修改主配配置文件,添加防盜鏈設置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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
進行盜鏈測試
盜鏈主機html網頁設置:
第三方用戶訪問盜鏈主機:
訪問前設置:
1.關閉防火墻工具firewalld和selinux
2.將域名對應的IP添加到 /etc/hosts 中
第三方訪問原主機 :
Nginx的PHP解析功能實現如果是交由FPM處理的,為了提高PHP的處理速度,可對FPM模塊進行參數的調整。
根據服務器的內存與服務負載,調整FPM模塊參數。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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進程啟動方式,動態的 --107行-- pm.max_children=20 #fpm進程啟動的最大進程數 --112行-- pm.start_servers = 5 #動態方式下啟動時默認開啟的進程數,在最小和最大之間 --117行-- pm.min_spare_servers = 2 #動態方式下最小空閑進程數 --122行-- pm.max_spare_servers = 8 #動態方式下最大空閑進程數 ? ? kill -USR2 ` cat /usr/local/php/var/run/php-fpm .pid` #重啟php-fpm netstat -anpt | grep 9000 |
到此這篇關于Nginx的優化、安全與防盜鏈的文章就介紹到這了
2022-10-11
解析在Tomcat中啟用虛擬線程特性2022-10-11
Apache網頁的優化、安全與防盜鏈圖文詳解2022-10-02
Elasticsearch6.2服務器升配后的bug(避坑指南)aarch64服務器-部署mysql 1、創建工作目錄 2、編寫docker-compose.yaml 3、編寫數據庫配置文件。 4、啟動 5、測試...
2022-10-02
Navicat 連接服務器不成功(Access denied for user 'root'@ '*.*.*.*' (using password: YES)),出現這種原因一般是服務器的root用戶沒有開啟訪問權限,本文給大家分享解決方法...
2022-10-02