nginx 还是欢迎界面_初识Nginx性能安全优化
前言
最近小編的項(xiàng)目上線了官方網(wǎng)站,同大部分Web服務(wù)網(wǎng)站相同,小編項(xiàng)目的Web站采用了LNMP(Linux、Nginx、Mysql、PHP)架構(gòu)。其中Nginx的作用是將靜態(tài)資源進(jìn)行解析返回給用戶;動(dòng)態(tài)資源通過FastCGI接口發(fā)送給PHP引擎服務(wù),PHP進(jìn)行讀庫解析,并最終把Nginx服務(wù)把獲取的數(shù)據(jù)返給用戶。
因?yàn)榇薟eb站主要作用是協(xié)助運(yùn)營同學(xué)推廣產(chǎn)品,所以除了最基本的網(wǎng)站頁面測試,Web頁面的性能、合理的服務(wù)器資源分配同時(shí)也是比較重要的需求。一方面,我們可以通過優(yōu)化瀏覽器渲染、HTML文件格式、文本資源壓縮等方式提升頁面性能;一方面可以考慮優(yōu)化Nginx的配置來增強(qiáng)其傳輸及并發(fā)支持能力。
方案一:配置Nginx gzip壓縮提升性能
Nginx gzip壓縮模塊提供了壓縮文件內(nèi)容的功能,用戶請(qǐng)求的內(nèi)容在發(fā)送到客戶端之前,Nginx服務(wù)器會(huì)根據(jù)一些具體的策略實(shí)施壓縮,以節(jié)約網(wǎng)站出口帶寬,同時(shí)加快數(shù)據(jù)傳輸效率,來提升用戶訪問體驗(yàn)。
Nginx gzip壓縮特點(diǎn)
提升網(wǎng)站用戶體驗(yàn):發(fā)送給用戶的內(nèi)容小了,用戶訪問單位大小的頁面就加快了,用戶體驗(yàn)也就隨之提升。
節(jié)約網(wǎng)站帶寬成本:數(shù)據(jù)是壓縮傳輸?shù)?因此節(jié)省了網(wǎng)站的帶寬流量成本,不過壓縮時(shí)會(huì)稍微消耗一些CPU資源,這個(gè)一般可以忽略。
參數(shù)配置
對(duì)應(yīng)的參數(shù)配置解釋如下:
gzip on;
開啟gzip壓縮功能。
gzip_min_length lk;
設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從 header頭的 Content-Length中獲取。默認(rèn)值是0,表示不管頁面多大都進(jìn)行壓縮。建議設(shè)置成大于1K,
如果小于1K可能會(huì)越壓越大。
gzip_buffers 4 16k;
壓縮緩沖區(qū)大小。表示申請(qǐng)4個(gè)單位為16K的內(nèi)存作為壓縮結(jié)果流緩存,默認(rèn)值是申請(qǐng)與原始數(shù)據(jù)大小相同的內(nèi)存空間來存儲(chǔ)gzip壓縮結(jié)果。
gzip_http_version 1.1;
壓縮版本(默認(rèn)1.1,前端為 squid2.5時(shí)使用1.0),用于設(shè)置識(shí)別HTTP協(xié)議版本,默認(rèn)是1.1,目前大部分瀏覽器已經(jīng)支持G2IP解壓,使用默認(rèn)即可。
gzip_comp_level 2;
壓縮比率。用來指定gzip壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理最慢,也比較消耗CPU資源。
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml applicat ion/xml+rss;
用來指定壓縮的類型,除了“ text/html” 之外,還允許對(duì)指定的MIME類型進(jìn)行g(shù)zipping響應(yīng)。特殊值“*”匹配任何MIME類型(0.8.29)。
text/html始終壓縮具有“ ”類型的響應(yīng)。
gzip_vary on;
vary header支持。該選項(xiàng)可以讓前端的緩存服務(wù)器緩存經(jīng)過gzip壓縮的頁面,例如用Squid緩存經(jīng)過 Nginx壓縮的數(shù)據(jù)。
實(shí)際參數(shù)優(yōu)化配置如下:
gzip on;
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_comp_level 5;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
gzip_vary on;
方案二:開啟高效文件傳輸模式
Nginx其實(shí)是存在高效模式的,如同顯卡和CPU我們可以通過超頻來榨干它們的性能,我們也可以開啟一些隱藏模式來提升Nginx的工作效率。
sendfile 參數(shù)用于開啟文件的高效傳輸模式。同時(shí)將tcp_nopush和tcp_nodelay兩個(gè)指令設(shè)置為on,可防止網(wǎng)絡(luò)及磁盤IO阻塞,實(shí)際提高性能。
sendfile on ;
tcp_nopush on;
tcp_nodelay on;
tcp_nopush 參數(shù)用于激活 Linux 上的 TCP_CORK socket 選項(xiàng),此選項(xiàng)僅僅當(dāng)開啟 sendfile 時(shí)才生效,tcp_nopush 參數(shù)可以允許把 http response header 和文件的開始部分放在一個(gè)文件里發(fā)布,以減少網(wǎng)絡(luò)報(bào)文段的數(shù)量
方案三:控制Nginx并發(fā)連接數(shù)量
我們可以通過限制每個(gè)key值的連接數(shù),尤其是控制單個(gè)IP可連接數(shù)。此方法在服務(wù)器下載,限制每次訪問下載目錄的連接數(shù)尤其有效。對(duì)應(yīng)配置為nginx_http_limit_conn_module。
實(shí)際配置文件如下:
[root@Nginx conf]# cat nginx.conf
worker_processes 4;
events {
worker_connections 20480;
}
http {
include mime.types;
server_tokens on;
sendfile on;
keepalive_timeout 65;
default_type application/octet-stream;
limit_conn_zone $binary_remove_addr zone=addr:10m; # 添加limit_conn_zone參數(shù)
server {
listen 80;
servername www.sogou.com;
location / {
root html;
index index.html index.htm;
limit_conn addr 1; # 設(shè)置單IP連接數(shù)為1
}
}
}
在客戶端使用ab測試工具進(jìn)行測試:
ab -c 2 -n 10 http://127.0.0.1/
模擬并發(fā)連接2,訪問服務(wù)器10次,可看到狀態(tài)碼200和503間隔是1:1 說明nginx已經(jīng)做了并發(fā)連接的限制,對(duì)超時(shí)連接做出了503響應(yīng)。
結(jié)束語
在保障基本功能的同時(shí)優(yōu)化前后端性能具有重要意義;產(chǎn)品的基礎(chǔ)是用戶體驗(yàn),如果脫離了快速、高效的用戶體驗(yàn),設(shè)計(jì)再為漂亮的界面也毫無意義。所以當(dāng)我們?cè)谧鲂枨蟮臅r(shí)候,除了基本的“測試保障”,同時(shí)也需要了解架構(gòu)實(shí)現(xiàn)細(xì)節(jié),優(yōu)化安全與效率性,切實(shí)測出一個(gè)可用、平穩(wěn)、高效的線上產(chǎn)品。
歡迎添加我們的搜狗測試微信號(hào),與我們一起聊聊測試。
總結(jié)
以上是生活随笔為你收集整理的nginx 还是欢迎界面_初识Nginx性能安全优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 套接字没有连接并且没有提供地址_网络是怎
- 下一篇: 三菱plc编程实例3000_三菱PLC十