日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

nginx 优化篇

發(fā)布時(shí)間:2025/3/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx 优化篇 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


?

????#運(yùn)行用戶(hù)

????user?www-data;???

????#啟動(dòng)進(jìn)程,通常設(shè)置成和cpu的數(shù)量相等

#阻塞和非阻塞網(wǎng)絡(luò)模型;

#同步阻塞模型,一請(qǐng)求一進(jìn)(線(xiàn))程,當(dāng)進(jìn)(線(xiàn))程增加到一定程度后

#更多CPU時(shí)間浪費(fèi)到切換一,性能急劇下降,所以負(fù)載率不高

#nginx基于時(shí)間的非阻塞多路復(fù)用(epoll或kquene)模型

#一個(gè)進(jìn)程在短時(shí)間內(nèi)可以相應(yīng)大量的請(qǐng)求

#建議值?<=cpu核心數(shù)量,一般高于cpu數(shù)量有好處,也許還有進(jìn)程切換開(kāi)銷(xiāo)的負(fù)面影響

????worker_processes??4;

#將work?process綁定到特定的cpu上,避免進(jìn)程在cpu間切換的開(kāi)銷(xiāo)

work_cpu_affinity??0001?0010?0100?1000


#8內(nèi)核4進(jìn)程時(shí)的設(shè)置方法?work_cpu_affinity?00000001?00000010?00000100?10000000


#每進(jìn)程最大可打開(kāi)文件描述符數(shù)量(Linux上文件描述符比較廣義,網(wǎng)絡(luò)端口、設(shè)備、磁盤(pán)文件都是)

#文件描述符用完了,新的鏈接會(huì)被拒絕,產(chǎn)生502類(lèi)錯(cuò)誤。

#linux最大可打開(kāi)文件數(shù)可通過(guò)ulimit?-n?FILECNT或?/etc/security/limit.conf配置

#理論值?系統(tǒng)最大數(shù)量/進(jìn)程數(shù)。但進(jìn)程間工作量并不是平均分配的,所以可設(shè)置的大一些

worker_rlimit_nofile?655350

?

????#全局錯(cuò)誤日志及PID文件

????error_log??/var/log/nginx/error.log;

????pid????????/var/run/nginx.pid;

?

????#工作模式及連接數(shù)上限

????events?{

#并發(fā)響應(yīng)能力的關(guān)鍵配置值

#每個(gè)進(jìn)程允許的最大同時(shí)連接數(shù),work_connectins?*?work_processes?=maxConnection;

#要注意maxconnections不等同于可相應(yīng)的用戶(hù)數(shù)量

#因?yàn)橐话阋粋€(gè)瀏覽器會(huì)同時(shí)開(kāi)兩條鏈接,如果反向代理,nginx到后端連服務(wù)器的鏈接數(shù)也要占用連接數(shù)

#所以,做靜態(tài)服務(wù)器時(shí),一般maxClient?=?work_connectins?*?work_processes?/?2

#做反向代理服務(wù)器時(shí)?maxClient?=?work_connectins?*?work_processes?/?4

#這個(gè)值理論上越大越好,但最多可承受多少請(qǐng)求與配件和網(wǎng)絡(luò)相關(guān),也可最大可打開(kāi)文件,最大可用socket數(shù)量

worker_connections?200000;


#指明使用epoll?或?kquene(*BSD)

????????use???epoll;?????????????#epoll是多路復(fù)用IO(I/O?Multiplexing)中的一種方式,但是僅用于linux2.6以上內(nèi)核,可以大大提高nginx的性能


#備注:要達(dá)到超高負(fù)載下最好的網(wǎng)絡(luò)響應(yīng)能力,還有必要優(yōu)化與網(wǎng)絡(luò)相關(guān)的linux內(nèi)核參數(shù)


????????worker_connections??1024;#單個(gè)后臺(tái)worker?process進(jìn)程的最大并發(fā)鏈接數(shù)

????????#?multi_accept?on;

????}

?

????#設(shè)定http服務(wù)器,利用它的反向代理功能提供負(fù)載均衡支持

????http?{

?????????#設(shè)定mime類(lèi)型,類(lèi)型由mime.type文件定義

????????include???????/etc/nginx/mime.types;

????????default_type??application/octet-stream;

????????#設(shè)定日志格式

#關(guān)閉此項(xiàng)可減少I(mǎi)O開(kāi)銷(xiāo),但也無(wú)法記錄訪問(wèn)信息,不利用業(yè)務(wù)分析,一般運(yùn)維情況不建議使用

????????access_log????/var/log/nginx/access.log;

#只記錄更為嚴(yán)重的錯(cuò)誤日志,可減少I(mǎi)O壓力

error_log?logs/error_log?crit;

#access_log?logs/access_log?main;

?

????????#sendfile?指令指定?nginx?是否調(diào)用?sendfile?函數(shù)(zero?copy?方式)來(lái)輸出文件,對(duì)于普通應(yīng)用,

????????#必須設(shè)為?on,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤(pán)IO重負(fù)載應(yīng)用,可設(shè)置為?off,以平衡磁盤(pán)與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime.

#啟用內(nèi)核復(fù)制模式,應(yīng)用保持開(kāi)啟達(dá)到最快的IO效率

????????sendfile????????on;

#簡(jiǎn)單說(shuō),啟動(dòng)如下兩項(xiàng)配置,會(huì)在數(shù)據(jù)包達(dá)到一定大小后在發(fā)送數(shù)據(jù)

#這樣會(huì)較少網(wǎng)絡(luò)通信次數(shù),降低阻塞概率,但也會(huì)影響響應(yīng)的及時(shí)性

#比較適合于文件下載這類(lèi)的大數(shù)據(jù)包通信場(chǎng)景

????????#tcp_nopush?????on;

#tcp_nodelay?on|off?on禁用Nagle算法



#keepalive_timeout?0;

#HTTP1.1支持持久連接alive

#降低每個(gè)鏈接的alive時(shí)間可在一定程度上提高可響應(yīng)連接數(shù)量,所以一般可適當(dāng)降低此值

?

????????#連接超時(shí)時(shí)間

????????keepalive_timeout??30s;

????????

???????

????????#開(kāi)啟gzip壓縮,有效降低網(wǎng)絡(luò)流量

????????gzip??on;

#過(guò)短的內(nèi)容壓縮效果不佳,壓縮過(guò)程還會(huì)浪費(fèi)系統(tǒng)資源

gzip_min_length?1000;

#可選值1~9研所級(jí)別越高壓縮效率越高,但對(duì)系統(tǒng)性能要求越高。

gzip_comp_level?4;

#壓縮內(nèi)容類(lèi)別

gzip_types?text/plain?text/css?application/json?application/x-javascript?text/xml


#靜態(tài)文件緩存

#最大緩存數(shù)量,文件未使用存活期

open_file_cache?max=655350?inactive=20s;

#驗(yàn)證緩存有效期時(shí)間間隔

open_file_cache_valid?30s;

#有效期內(nèi)文件最少使用次數(shù)

open_file_cache_min_uses?2;



?

????????#設(shè)定請(qǐng)求緩沖

????????client_header_buffer_size????1k;

????????large_client_header_buffers??4?4k;

?

????????include?/etc/nginx/conf.d/*.conf;

????????include?/etc/nginx/sites-enabled/*;

?

????????#設(shè)定負(fù)載均衡的服務(wù)器列表

?????????upstream?mysvr?{

????????#weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大

????????#本機(jī)上的Squid開(kāi)啟3128端口

????????server?192.168.8.1:3128?weight=5;

????????server?192.168.8.2:80??weight=1;

????????server?192.168.8.3:80??weight=6;

????????}

========================================================================================================================================================

========================================================================================================================================================

?

???????server?{

????????#偵聽(tīng)80端口

????????????listen???????80;

????????????#定義使用www.xx.com訪問(wèn)

????????????server_name??www.xx.com;

charset?utf-8;

?

????????????#設(shè)定本虛擬主機(jī)的訪問(wèn)日志

????????????access_log??logs/www.xx.com.access.log??main;

#location表達(dá)式

#syntax:location?[=|~|~*|^~|@]?/uri/?{...}

#分別兩種配置模式,普通字符串匹配,正則匹配

#無(wú)開(kāi)頭引導(dǎo)字符或以=開(kāi)頭表示普通字符串匹配

#以~或~*開(kāi)頭表示正則匹配,~*表示不區(qū)分大小寫(xiě)

#多個(gè)location時(shí)匹配規(guī)則

#總體是先普通后正則,只識(shí)別URI部分,例如請(qǐng)求為/test/1/abc.do?arg=xxx

#1.先查找是否有=開(kāi)頭的精確匹配,及l(fā)ocation?=/test/1/abc.do?{...}

#2.再查找普通匹配,以最大前綴為規(guī)則,如下有兩個(gè)location

#location?/test/?{...}

#location?/test/1?{...}

#則匹配后一項(xiàng)

#3.匹配到一個(gè)普通格式后,搜索并未結(jié)束,而是暫存當(dāng)前結(jié)果,并繼續(xù)在搜索正則模式

#4.在所有正則模式location中找到第一個(gè)匹配向后,以此屁配項(xiàng)為最終結(jié)果

#所以正則匹配項(xiàng)匹配規(guī)則受定義前后順序影響,但普通匹配不會(huì)

#5.如果未找到正則匹配項(xiàng),則以3中緩存的結(jié)果為最終結(jié)果

#6.如果一個(gè)匹配都沒(méi)有,返回404


#location?=/?{...}?與?location?/?{...}的差別

#前一個(gè)是精確匹配,只響應(yīng)/請(qǐng)求,所有/xxx類(lèi)請(qǐng)求不會(huì)以前綴匹配形式匹配到它

#而后一個(gè)正相反,所有請(qǐng)求必然都是以/開(kāi)頭,所以沒(méi)有其他匹配結(jié)果時(shí)一定會(huì)執(zhí)行到它


#location?^~?/?{...}?^~意思是非正則,表示匹配到此模式后不再繼續(xù)正則搜索

#所有如果這樣配置,相當(dāng)于關(guān)閉了正則匹配功能

#因?yàn)橐粋€(gè)請(qǐng)求在普通匹配規(guī)則下沒(méi)得到其他普通匹配時(shí),最終匹配到這里

?

????????#默認(rèn)請(qǐng)求

????????location?/?{

??????????????root???/root;??????#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置

??????????????index?index.php?index.html?index.htm;???#定義首頁(yè)索引文件的名稱(chēng)

?

??????????????fastcgi_pass??www.xx.com;

?????????????fastcgi_param??SCRIPT_FILENAME??$document_root/$fastcgi_script_name;

??????????????include?/etc/nginx/fastcgi_params;

????????????}

?

????????#?定義錯(cuò)誤提示頁(yè)面

????????error_page???500?502?503?504?/50x.html;?

????????????location?=?/50x.html?{

????????????root???/root;

????????}

?

????????#靜態(tài)文件,nginx自己處理

????????location?~?^/(p_w_picpaths|javascript|js|css|flash|media|static)/?{

????????????root?/var/www/virtual/htdocs;

????????????#過(guò)期30天,靜態(tài)文件不怎么更新,過(guò)期可以設(shè)大一點(diǎn),如果頻繁更新,則可以設(shè)置得小一點(diǎn)。

????????????expires?30d;

????????}

????????#PHP?腳本請(qǐng)求全部轉(zhuǎn)發(fā)到?FastCGI處理.?使用FastCGI默認(rèn)配置.

????????location?~?\.php$?{

????????????root?/root;

????????????fastcgi_pass?127.0.0.1:9000;

????????????fastcgi_index?index.php;

????????????fastcgi_param?SCRIPT_FILENAME?/home/www/www$fastcgi_script_name;

????????????include?fastcgi_params;

????????}

????????#設(shè)定查看Nginx狀態(tài)的地址

????????location?/NginxStatus?{

????????????stub_status????????????on;

????????????access_log??????????????on;

????????????auth_basic??????????????"NginxStatus";

????????????auth_basic_user_file??conf/htpasswd;

????????}

????????#禁止訪問(wèn)?.htxxx?文件

????????location?~?/\.ht?{

????????????deny?all;

????????}

????????

?????????}

????}

?

以上是一些基本的配置,使用Nginx最大的好處就是負(fù)載均衡

?

如果要使用負(fù)載均衡的話(huà),可以修改配置http節(jié)點(diǎn)如下:

?

????#設(shè)定http服務(wù)器,利用它的反向代理功能提供負(fù)載均衡支持

????http?{

?????????#設(shè)定mime類(lèi)型,類(lèi)型由mime.type文件定義

????????include???????/etc/nginx/mime.types;

????????default_type??application/octet-stream;

????????#設(shè)定日志格式

????????access_log????/var/log/nginx/access.log;

?

????????#省略上文有的一些配置節(jié)點(diǎn)

?

????????#。。。。。。。。。。

?

????????#設(shè)定負(fù)載均衡的服務(wù)器列表

?????????upstream?mysvr?{

????????#weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大

????????server?192.168.8.1x:3128?weight=5;#本機(jī)上的Squid開(kāi)啟3128端口

????????server?192.168.8.2x:80??weight=1;

????????server?192.168.8.3x:80??weight=6;

????????}

?

???????upstream?mysvr2?{

????????#weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大

?

????????server?192.168.8.x:80??weight=1;

????????server?192.168.8.x:80??weight=6;

????????}

?

???????#第一個(gè)虛擬服務(wù)器

???????server?{

????????#偵聽(tīng)192.168.8.x的80端口

????????????listen???????80;

????????????server_name??192.168.8.x;

?

??????????#對(duì)aspx后綴的進(jìn)行負(fù)載均衡請(qǐng)求

????????location?~?.*\.aspx$?{

?

?????????????root???/root;??????#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置

??????????????index?index.php?index.html?index.htm;???#定義首頁(yè)索引文件的名稱(chēng)

?

??????????????proxy_pass??http://mysvr?;#請(qǐng)求轉(zhuǎn)向mysvr?定義的服務(wù)器列表

?

??????????????#以下是一些反向代理的配置可刪除.

?

??????????????proxy_redirect?off;

?

??????????????#后端的Web服務(wù)器可以通過(guò)X-Forwarded-For獲取用戶(hù)真實(shí)IP

??????????????proxy_set_header?Host?$host;

??????????????proxy_set_header?X-Real-IP?$remote_addr;

??????????????proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;

??????????????client_max_body_size?10m;????#允許客戶(hù)端請(qǐng)求的最大單文件字節(jié)數(shù)

??????????????client_body_buffer_size?128k;??#緩沖區(qū)代理緩沖用戶(hù)端請(qǐng)求的最大字節(jié)數(shù),

??????????????proxy_connect_timeout?90;??#nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))

??????????????proxy_send_timeout?90;????????#后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))

??????????????proxy_read_timeout?90;?????????#連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))

??????????????proxy_buffer_size?4k;?????????????#設(shè)置代理服務(wù)器(nginx)保存用戶(hù)頭信息的緩沖區(qū)大小

??????????????proxy_buffers?4?32k;???????????????#proxy_buffers緩沖區(qū),網(wǎng)頁(yè)平均在32k以下的話(huà),這樣設(shè)置

??????????????proxy_busy_buffers_size?64k;????#高負(fù)荷下緩沖大小(proxy_buffers*2)

??????????????proxy_temp_file_write_size?64k;??#設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳

?

???????????}

?

?????????}

????}

轉(zhuǎn)載于:https://blog.51cto.com/liangml/1855776

總結(jié)

以上是生活随笔為你收集整理的nginx 优化篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。