- 在企業網站中,爲了不同一個客戶長時間佔用鏈接,形成資源浪費,可設置相應的鏈接超時參數,實現控制鏈接訪問時間
- 使用fiddler工具查看connection參數
Keepalive_timeout
設置鏈接保持超時時間,通常可只設置該參數,默認爲65秒,可根據網站的狀況設置,或者關閉,可在http段,server段,或者location段設置
Client_header_timeout
指定等待客戶端發送請求頭的超時時間
Client_body_timeout
設置請求體讀超時時間javascript
[root@localhost ~]# cd /usr/local/nginx/conf/ [root@localhost conf]# vim nginx.conf ##修改配置文件 #keepalive_timeout 0; keepalive_timeout 65 180; ##服務端和客戶端的超時時間 client_header_timeout 80; ##請求頭部超時時間 client_body_timeout 80; ##請求體超時時間 [root@localhost conf]# service nginx stop ##關閉開啓服務 [root@localhost conf]# service nginx start
- 在高併發場景,須要啓動更多的Nginx進程以保證快速響應,以處理用戶的請求,避免形成阻塞
- 可使用ps aux命令查看Nginx運行進程的個數
- 更改進程數的配置方法
修改配置文件,修改進程配置參數- 修改配置文件的worker_process參數
通常設爲CPU的個數或者核數
在高併發狀況下可設置爲CPU個數或者核數的2倍- 運行進程數多一些,響應訪問請求時,Nginx就不會臨時啓動新的進程提供服務,減小了系統的開銷,提高了服務速度
- 使用ps aux查看運行進程數的變化狀況
- 默認狀況,Nginx的多個進程可能跑在一個CPU上,能夠分配不一樣的進程給不一樣的CPU處理,充分利用硬件多核多CPU
- 在一臺4核物理服務器,可進行如下配置,將進程進行分配
worker_cpu_affinity 0001 0010 0100 1000
[root@localhost ~]# ps aux | grep nginx ##查看進程信息 root 7231 0.0 0.0 20548 620 ? Ss 01:57 0:00 nginx: master process ##主進程 nginx 7232 0.0 0.0 23076 1400 ? S 01:57 0:00 nginx: worker process ##1個工做進程 root 7372 0.0 0.0 112728 972 pts/2 S+ 02:07 0:00 grep --color=auto nginx
[root@localhost ~]# cd /proc/ [root@localhost proc]# cat cpuinfo ##查看cpu核心數 processor : 0 ##第一個 ... processor : 1 ##第二個 ... [root@localhost proc]# cd /usr/local/nginx/conf/ [root@localhost conf]# vim nginx.conf ##修改配置文件 #user nobody; worker_processes 2; ##核心數爲2 worker_cpu_affinity 01 10; ##進程分配
[root@localhost conf]# ps aux | grep nginx ##查看Nginx進程信息 nginx 2329 0.0 0.0 23076 1392 ? S 20:12 0:00 nginx: worker process ##此時是兩個工做進程 nginx 2330 0.0 0.0 23076 1384 ? S 20:12 0:00 nginx: worker process
- Nginx的ngx_http_gzip_module壓縮模塊提供對文件內容壓縮的功能
- 容許Nginx服務器將輸出內容在發送客戶端以前進行壓縮,以節約網站帶寬,提高用戶的訪問體驗,默認已經安裝
- 可在配置文件中加入相應的壓縮功能參數對壓縮性能進行優化
- gzip on:開啓gzip壓縮輸出
- gzip_min_length 1k:用於設置容許壓縮的頁面最小字節數
- gzip_buffers 4 16k:表示申請4個單元爲16k的內存做爲壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果
- zip_http_version 1.0:用於設置識別http協議版本,默認是1.1,目前大部分瀏覽器已經支持gzip解壓,但處理最慢,也比較消耗服務器CPU資源
- gzip_comp_level 2:用來指定gzip壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理速度最慢,使用默認便可
- gzip_types text/plain:壓縮類型,是就對那些網頁文檔啓用壓縮功能
- gzip_vary on:選項可讓前端的緩存服務器緩存通過gzip壓縮的頁面
Linux服務器(192.168.13.142) 一臺win10測試機
[root@localhost ~]# cd /usr/local/nginx/conf/ [root@localhost conf]# vim nginx.conf ##修改配置文件 #gzip on; ##開啓gzip壓縮功能(暫時不開啓) gzip_min_length 1k; ##壓縮閥值 gzip_buffers 4 16k; ##buffer 大小爲4個16k緩衝區大小 gzip_http_version 1.1; ##壓縮版本 gzip_comp_level 6; ##壓縮比率,5,6適中 gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php app lication/javascript application/json; ##支持的類型格式 gzip_disable "MSIE [1-6]\."; ##禁用gzip條件,支持正則,表示ie6如下不啓用gzip gzip_vary on; ##讓前端的緩存服務器緩存通過gzip壓縮的頁面
[root@localhost html]# mount.cifs //192.168.100.3/LAMP-C7 /mnt ##掛載共享 Password for root@//192.168.100.3/LAMP-C7: [root@localhost html]# ls /mnt apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt apr-util-1.6.0.tar.gz error.png mysql-5.6.26.tar.gz awstats-7.6.tar.gz httpd-2.4.29.tar.bz2 nginx-1.12.0.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm kali.jpg php-5.6.11.tar.bz2 [root@localhost html]# cp /mnt/11.png ./ ##將圖片複製到站點中 [root@localhost html]# vim index.html ##將圖片放到網頁中 <h1>Welcome to nginx!</h1> <img src="11.jpg"/> ##添加圖片 [root@localhost html]# service nginx stop ##關閉開啓Nginx服務 [root@localhost html]# service nginx start [root@localhost html]# systemctl stop firewalld.service ##關閉防火牆 [root@localhost html]# setenforce 0
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf ##修改配置文件 gzip on; ##開啓壓縮功能 [root@localhost html]# service nginx stop ##關閉和開啓Nginx服務 [root@localhost html]# service nginx start
在企業網站服務中,通常都要配置防盜鏈功能,以免網站內容被非法盜用,以形成經濟損失 Nginx防盜鏈功能也很是強大。默認狀況下,只須要進行簡單的配置,便可實現防盜鏈處理
一臺Linux服務器(192.168.13.142) 一臺win7盜鏈網站(192.168.13.135) 一臺win10測試機
<html> <head> <title>雲計算</title> </head> <body> <h1>this is test web</h1> <img src="http://www.kgc.com/11.jpg"/> ##盜鏈的圖片 </body> </html>
[root@localhost html]# yum install bind -y ##安裝dns [root@localhost html]# vim /etc/named.conf options { listen-on port 53 { any; }; ##監聽全部 listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; ##容許全部 [root@localhost html]# vim /etc/named.rfc1912.zones ##配置區域配置文件 zone "kgc.com" IN { type master; file "kgc.com.zone"; ##kgc區域數據配置文件 allow-update { none; }; }; [root@localhost html]# cd /var/named/ [root@localhost named]# cp -p named.localhost kgc.com.zone ##複製模板 [root@localhost named]# vim kgc.com.zone ##修改區域配置文件 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 www IN A 192.168.13.142 ##本機地址 [root@localhost named]# systemctl start named ##開啓dns服務 [root@localhost named]# systemctl stop firewalld.service ##關閉防火牆 [root@localhost named]# setenforce 0
[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf ##在server段插入防盜鏈配置 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~*\.(jpg|gif|swf)$ { ##支持格式 valid_referers none blocked *.kgc.com kgc.com; ##容許kgc.com爲後綴訪問 if ( $invalid_referer ) { rewrite ^/ http://www.kgc.com/error.png; ##不是則發送錯誤圖片 } } [root@localhost named]# cp /mnt/error.png /usr/local/nginx/html/ ##將防盜鏈圖片放到站點中 [root@localhost named]# service nginx stop ##關閉開啓Nginx服務 [root@localhost named]# service nginx start
- Nginx的PHP解析功能實現若是是交由FPM處理的,爲了提升PHP的出來速度,可對FPM模塊進行參數的調整
- FPM模塊參數調整,要根據服務器的內存與服務器負載進行調整
- 啓動fpm進程方式
static:將產生固定數量的fpm進程
dynamic:將以動態的方式產生fpm進程
經過pm參數指定
- static的方式的參數
pm.max_children:指定啓動的進程數量- Dynamic方式的參數
pm.max_children:指定啓動的進程數量最大的數量
pm.start_servers:動態方式下初始的fpm進程數量
pm.min_spare_servers:動態方式下最小的fpm空閉進程數
pm.max_spare_servers:動態方式下最大的fpm空閉進程數
優化緣由:服務器爲雲服務器,運行了我的論壇,內存爲1.5G,fpm進程數爲20,內存消耗近1G,處理比較慢 優化參數調整:FPM啓動時有5個進程,最小空閒2個進程,最大空閒8個進程,最多能夠有20個進程存在