浣滆?NetSeek http://www.linuxtone.org (IT榪愮淮涓撳緗憒闆嗙兢鏋舵瀯|鎬ц兘璋冧紭)
嬈㈣繋杞澆,杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強(qiáng)鏈0鏄?
棣栧彂鏃墮棿: 2008-11-25 鏇存柊鏃墮棿:2009-1-14
鐩?褰?br />
涓銆?nbsp; Nginx 鍩虹鐭ヨ瘑
浜屻?nbsp; Nginx 瀹夎鍙?qiáng)璋冭?/em>
涓夈?nbsp; Nginx Rewrite
鍥涖?nbsp; Nginx Redirect
浜斻?nbsp; Nginx 鐩綍鑷姩鍔犳枩綰?
鍏?nbsp; Nginx Location
涓冦?nbsp; Nginx expires
鍏?nbsp; Nginx 闃茬洍閾?/em>
涔?jié)銆?nbsp; Nginx 璁塊棶鎺у埗
鍗併?nbsp; Nginx鏃ュ織澶勭悊
鍗佷竴銆?nbsp; Nginx Cache
鍗佷簩銆?nbsp; Nginx璐熻澆鍧囪
鍗佷笁銆? Nginx綆鍗曚紭鍖?/em>
鍗佸洓銆?nbsp; 濡備綍鏋勫緩楂樻ц兘鐨凩EMP鐜
鍗佷簲銆?nbsp; Nginx鏈嶅姟鐩戞帶
鍗佸叚銆?nbsp; 甯歌闂涓庨敊璇鐞?
鍗佷竷銆?nbsp; 鐩稿叧璧勬簮涓嬭澆
銆愬墠璦銆戯細(xì)
緙栧啓姝ゆ妧鏈寚鍗楀湪浜庢帹騫挎櫘鍙?qiáng)NGINX鍦ㄥ浗鍐呯殑浣跨敤錛屾洿鏂逛究鐨勫府鍔╁ぇ瀹朵簡瑙e拰鎺屾彙NGINX鐨勪竴浜涗嬌鐢ㄦ妧宸с傛湰鎸囧崡寰堝鎶宸ф潵鑷簬緗戠粶鍜屽伐浣滀腑鎴栫綉緇滀笂鏈嬪弸浠棶鎴戠殑闂.鍦ㄦ瀵圭綉緇滀笂鎰挎剰鍒嗕韓鐨勬湅鍙嬩滑琛ㄧず鎰熻阿鍜岃嚧鎰忥紒嬈㈣繋澶у鍜屾垜涓璧蜂赴瀵屾湰鎶鏈寚鍗楁彁鍑烘洿濂界殑寤鴻錛佽鏈嬪弸浠叧娉? http://www.linuxtone.org 鎶鏈垎浜ぞ鍖? 浜掓兂瀛︿範(fàn)鍏卞悓榪涙!
涓銆?Nginx 鍩虹鐭ヨ瘑
1銆佺畝浠?br />
Nginx ("engine x") 鏄竴涓珮鎬ц兘鐨?HTTP 鍜?鍙嶅悜浠g悊 鏈嶅姟鍣紝涔熸槸涓涓?IMAP/POP3/SMTP 浠g悊鏈嶅姟鍣ㄣ?Nginx 鏄敱 Igor Sysoev 涓轟縿緗楁柉璁塊棶閲忕浜岀殑 Rambler.ru 绔欑偣寮鍙戠殑錛屽畠宸茬粡鍦ㄨ绔欑偣榪愯瓚呰繃涓ゅ勾鍗婁簡銆侷gor 灝嗘簮浠g爜浠ョ被BSD璁稿彲璇佺殑褰㈠紡鍙戝竷銆傚敖綆¤繕鏄祴璇曠増錛屼絾鏄紝Nginx 宸茬粡鍥犱負(fù)瀹冪殑紼沖畾鎬с佷赴瀵岀殑鍔熻兘闆嗐佺ず渚嬮厤緗枃浠跺拰浣庣郴緇熻祫婧愮殑娑堣楄岄椈鍚嶄簡銆?br />
鏇村鐨勮瑙佸畼鏂箇iki: http://wiki.codemongers.com/
2銆?Nginx鐨勪紭鐐?br />
nginx鍋氫負(fù)HTTP鏈嶅姟鍣紝鏈変互涓嬪嚑欏瑰熀鏈壒鎬э細(xì)
1) 澶勭悊闈欐佹枃浠訛紝绱㈠紩鏂囦歡浠ュ強(qiáng)鑷姩绱㈠紩錛涙墦寮鏂囦歡鎻忚堪絎︾紦鍐詫紟
2) 鏃犵紦瀛樼殑鍙嶅悜浠g悊鍔犻燂紝綆鍗曠殑璐熻澆鍧囪 鍜屽閿欙紟
3) FastCGI錛岀畝鍗曠殑璐熻澆鍧囪 鍜屽閿欙紟
4)
妯″潡鍖栫殑緇撴瀯銆傚寘鎷琯zipping, byte ranges, chunked responses, 浠ュ強(qiáng)
SSI-filter絳塮ilter銆傚鏋滅敱FastCGI鎴栧叾瀹冧唬鐞嗘湇鍔″櫒澶勭悊鍗曢〉涓瓨鍦ㄧ殑澶氫釜SSI錛屽垯榪欓」澶勭悊鍙互騫惰榪愯錛岃屼笉闇瑕佺浉浜掔瓑寰呫?/span>
5) 鏀寔SSL 鍜?TLS SNI錛?br />
Nginx涓撲負(fù)鎬ц兘浼樺寲鑰屽紑鍙戯紝鎬ц兘鏄叾鏈閲嶈鐨勮冮噺, 瀹炵幇涓婇潪甯告敞閲嶆晥鐜?銆傚畠鏀寔鍐呮牳Poll妯″瀷錛岃兘緇忓彈楂樿礋杞界殑鑰冮獙, 鏈夋姤鍛婅〃鏄庤兘鏀寔楂樿揪 50,000 涓茍鍙戣繛鎺ユ暟銆?br />
Nginx鍏鋒湁寰堥珮鐨勭ǔ瀹氭с傚叾瀹僅TTP鏈嶅姟鍣紝褰撻亣鍒拌闂殑宄板鹼紝鎴栬呮湁浜烘伓鎰忓彂璧鋒參閫熻繛鎺ユ椂錛屼篃寰堝彲鑳戒細(xì)瀵艱嚧鏈嶅姟鍣ㄧ墿鐞嗗唴瀛樿楀敖棰戠箒浜ゆ崲錛屽け鍘誨搷搴旓紝鍙兘閲嶅惎鏈嶅姟鍣ㄣ備緥濡傚綋鍓峚pache涓鏃︿笂鍒?00涓互涓婅繘紼嬶紝web鍝?
搴旈熷害灝辨槑鏄鵑潪甯哥紦鎱簡銆傝孨ginx閲囧彇浜嗗垎闃舵璧勬簮鍒嗛厤鎶鏈紝浣垮緱瀹冪殑CPU涓庡唴瀛樺崰鐢ㄧ巼闈炲父浣庛俷ginx瀹樻柟琛ㄧず淇濇寔10,000涓病鏈夋椿鍔ㄧ殑榪?
鎺ワ紝瀹冨彧鍗?.5M鍐呭瓨錛屾墍浠ョ被浼糄OS榪欐牱鐨勬敾鍑誨nginx鏉ヨ鍩烘湰涓婃槸姣棤鐢ㄥ鐨勩傚氨紼沖畾鎬ц岃█, nginx姣攍ighthttpd鏇磋儨涓絳廣?br />
Nginx鏀寔鐑儴緗層傚畠鐨勫惎鍔ㄧ壒鍒鏄? 騫朵笖鍑犱箮鍙互鍋氬埌7*24涓嶉棿鏂繍琛岋紝鍗充嬌榪愯鏁頒釜鏈堜篃涓嶉渶瑕侀噸鏂板惎鍔ㄣ備綘榪樿兘澶熷湪涓嶉棿鏂湇鍔$殑鎯呭喌涓嬶紝瀵硅蔣浠剁増鏈繘琛岃繘琛屽崌綰с?br />
Nginx閲囩敤master-slave妯″瀷, 鑳藉鍏呭垎鍒╃敤SMP鐨勪紭鍔匡紝涓旇兘澶熷噺灝戝伐浣滆繘紼嬪湪紓佺洏I(yè)/O鐨勯樆濉炲歡榪熴傚綋閲囩敤select()/poll()璋冪敤鏃訛紝榪樺彲浠ラ檺鍒舵瘡涓繘紼嬬殑榪炴帴鏁般?br />
Nginx
浠g爜璐ㄩ噺闈炲父楂橈紝浠g爜寰堣鑼冿紝 鎵嬫硶鎴愮啛錛?妯″潡鎵╁睍涔熷緢瀹規(guī)槗銆傜壒鍒煎緱涓鎻愮殑鏄己澶х殑Upstream涓嶧ilter閾俱?
Upstream涓鴻濡俽everse proxy,
涓庡叾浠栨湇鍔″櫒閫氫俊妯″潡鐨勭紪鍐欏瀹氫簡寰堝ソ鐨勫熀紜銆傝孎ilter閾炬渶閰風(fēng)殑閮ㄥ垎灝辨槸鍚勪釜filter涓嶅繀絳夊緟鍓嶄竴涓猣ilter鎵ц瀹屾瘯銆傚畠鍙互鎶婂墠涓涓?
filter鐨勮緭鍑哄仛涓哄綋鍓峟ilter鐨勮緭鍏ワ紝榪欐湁鐐瑰儚Unix鐨勭綰褲傝繖鎰忓懗鐫錛屼竴涓ā鍧楀彲浠ュ紑濮嬪帇緙╀粠鍚庣鏈嶅姟鍣ㄥ彂閫佽繃鏉ョ殑璇鋒眰錛屼笖鍙互鍦ㄦā鍧楁帴鏀?
瀹屽悗绔湇鍔″櫒鐨勬暣涓姹備箣鍓嶆妸鍘嬬緝嫻佽漿鍚戝鎴風(fēng)銆?br />
Nginx閲囩敤浜嗕竴浜沷s鎻愪緵鐨勬渶鏂扮壒鎬у瀵箂endfile (Linux 2.2+)錛宎ccept-filter (FreeBSD 4.1+)錛孴CP_DEFER_ACCEPT (Linux 2.4+) 鐨勬敮鎸侊紝浠庤屽ぇ澶ф彁楂樹簡鎬ц兘
浜屻?Nginx 瀹夎鍙?qiáng)璋冭?/strong>
1銆丳cre 瀹夎
2. nginx 緙栬瘧瀹夎
鏇磋緇嗙殑妯″潡瀹氬埗涓庡畨瑁呰鍙傜収瀹樻柟wiki.
3銆丯ginx 閰嶇疆鏂囦歡嫻嬭瘯錛?/p>
3銆丯ginx 鍚姩錛?/p>
4銆丯ginx 閰嶇疆鏂囦歡淇敼閲嶆柊鍔犺澆錛?/p>
` 鍥涖?Nginx Redirect 浜斻?Nginx 鐩綍鑷姩鍔犳枩綰? 鍏?nbsp; Nginx Location 2銆佹牴鎹垽鏂煇涓洰褰?/p>
鍏?nbsp; Nginx 闃茬洍閾?/strong> 2. 閽堝涓嶅悓鐨勭洰褰?/p>
3. 鍚屽疄鐜伴槻鐩楅摼鍜宔xpires鐨勬柟娉?/p>
涔?jié)銆?Nginx 璁塊棶鎺у埗 2. Nginx 紱佹璁塊棶鏌愮被鍨嬬殑鏂囦歡. 鏂規(guī)硶2: 瀹炰緥: 3. 浣跨敤ngx_http_access_module闄愬埗ip璁塊棶 璇︾粏鍙傝wiki: http://wiki.codemongers.com/NginxHttpAccessModule#allow 鍙厑璁稿鎴跨涓涓嚎紼?姣忎釜綰跨▼20k. 6. 涓婃枃浠跺ぇ灝忛檺鍒?br />
涓婚厤緗枃浠墮噷鍔犲叆濡備笅錛屽叿浣撳ぇ灝忔牴鎹綘鑷繁鐨勪笟鍔″仛璋冩暣銆?br />
client_max_body_size 10m; 鏇村鐨勬棩蹇楀垎鏋愪笌澶勭悊灝卞叧娉?鍚屾椂嬈㈣繋浣犲弬鍔犺璁?:http://bbs.linuxtone.org/forum-8-1.html 鍏朵腑錛?br />
proxy_store on鐢ㄦ潵鍚敤緙撳瓨鍒版湰鍦扮殑鍔熻兘錛?br />
proxy_temp_path鐢ㄦ潵鎸囧畾緙撳瓨鍦ㄥ摢涓洰褰曚笅錛屽錛歱roxy_temp_path html; 鍗蟲敼鎴愭湁鏉′歡鍦板幓鎵цproxy_pass錛岃繖涓潯浠跺氨鏄綋璇鋒眰鐨勬枃浠跺湪鏈湴鐨刾roxy_temp_path鎸囧畾鐨勭洰褰曚笅涓嶅瓨鍦ㄦ椂錛屽啀鍚戝悗绔媺鍙栥?br />
鍦ㄩ渶瑕佷嬌鐢ㄨ礋杞藉潎琛$殑server涓鍔?br />
proxy_pass http://bbs.linuxtone.org/; #vi linuxtone_lb.conf 娉ㄩ噴鎺夋垨鍒犳帀榪欏嚑琛岋紝閲嶆柊緙栬瘧鍗沖彲銆?br />
2) 淇敼nginx_http_header_filter_module 淇敼涓?/p>
a) 淇敼nginx_http_header_filter_module 淇敼涓? 淇敼鍚庨噸鏂扮紪璇戜竴涓嬬幆澧? 鍒╃敤curl鍛戒護(hù)鏌ョ湅鏈嶅姟鍣╤eader 3.涓虹壒瀹氱殑CPU鎸囧畾CPU綾誨瀷緙栬瘧浼樺寲. 緙栬瘧nginx 鍔犺澆google_perftools_module: #浣塊厤緗珛鍗崇敓鏁?br />
/sbin/sysctl -p #vi /etc/nginx-rrd.conf //鏍規(guī)嵁浣犵殑鍏蜂綋鎯呭喌鍋氳皟鏁? 媯嫻嬫彃浠?/p>
鍦╟acti綆$悊闈㈡澘瀵煎叆 6銆佸浣曞叧闂璑ginx鐨凩OG 鍏朵腑浠ヤ笅榪欓」鎸哄煎緱鐣欐剰鐨勩?br />
Tcmalloc 涓嶅崟鍙敤浜?Mysql 鐨勪紭鍖栵紝榪樿兘搴旂敤浜?Nginx 4.Tcmalloc浼樺寲Nginx 鎬ц兘
涓夈丯ginx Rewrite
1. Nginx Rewrite 鍩烘湰鏍囪(flags)
last - 鍩烘湰涓婇兘鐢ㄨ繖涓狥lag銆?/em>
鈥葷浉褰撲簬Apache閲岀殑[L]鏍囪錛岃〃紺哄畬鎴恟ewrite錛屼笉鍐嶅尮閰嶅悗闈㈢殑瑙勫垯
break - 涓Rewirte錛屼笉鍐嶇戶緇尮閰?/em>
redirect - 榪斿洖涓存椂閲嶅畾鍚戠殑HTTP鐘舵?02
permanent - 榪斿洖姘鎬箙閲嶅畾鍚戠殑HTTP鐘舵?01
鈥誨師鏈夌殑url鏀寔姝e垯 閲嶅啓鐨剈rl涓嶆敮鎸佹鍒?/strong>
2. 姝e垯琛ㄨ揪寮忓尮閰嶏紝鍏朵腑錛?br />
* ~ 涓哄尯鍒嗗ぇ灝忓啓鍖歸厤
* ~* 涓轟笉鍖哄垎澶у皬鍐欏尮閰?/em>
* !~鍜?~* 鍒嗗埆涓哄尯鍒嗗ぇ灝忓啓涓嶅尮閰嶅強(qiáng)涓嶅尯鍒嗗ぇ灝忓啓涓嶅尮閰?/em>
3. 鏂囦歡鍙?qiáng)鐩綍鍖归厤锛屽叾涓Q?br />
* -f鍜?-f鐢ㄦ潵鍒ゆ柇鏄惁瀛樺湪鏂囦歡
* -d鍜?-d鐢ㄦ潵鍒ゆ柇鏄惁瀛樺湪鐩綍
* -e鍜?-e鐢ㄦ潵鍒ゆ柇鏄惁瀛樺湪鏂囦歡鎴栫洰褰?/em>
* -x鍜?-x鐢ㄦ潵鍒ゆ柇鏂囦歡鏄惁鍙墽琛?/em>
3. Nginx 鐨勪竴浜涘彲鐢ㄧ殑鍏ㄥ眬鍙橀噺錛屽彲鐢ㄥ仛鏉′歡鍒ゆ柇錛?/p>
灝嗘墍鏈塴inuxtone.org涓巒etseek.linuxtone.org鍩熷悕鍏ㄩ儴鑷煩杞埌http://www.linuxtone.org
1錛庡熀鏈娉?[鍜屼笂闈ewrite姝e垯鍖歸厤璇硶鍩烘湰涓鑷碷
location [=|~|~*|^~] /uri/ { … }
* ~ 涓哄尯鍒嗗ぇ灝忓啓鍖歸厤
* ~* 涓轟笉鍖哄垎澶у皬鍐欏尮閰?/em>
* !~鍜?~*鍒嗗埆涓哄尯鍒嗗ぇ灝忓啓涓嶅尮閰嶅強(qiáng)涓嶅尯鍒嗗ぇ灝忓啓涓嶅尮閰?/em>
紺轟緥1:
location = / {
# matches the query / only.
# 鍙尮閰?/ 鏌ヨ銆?/em>
}
鍖歸厤浠諱綍鏌ヨ錛屽洜涓烘墍鏈夎姹傞兘宸?/ 寮澶淬備絾鏄鍒欒〃杈懼紡瑙勫垯鍜岄暱鐨勫潡瑙勫垯灝嗚浼樺厛鍜屾煡璇㈠尮閰?/strong>
紺轟緥2:
location ^~ /images/ {
# matches any query beginning with /images/ and halts searching,
# so regular expressions will not be checked.
# 鍖歸厤浠諱綍宸?/images/ 寮澶寸殑浠諱綍鏌ヨ騫朵笖鍋滄鎼滅儲銆備換浣曟鍒欒〃杈懼紡灝嗕笉浼?xì)琚珛箣璇曘?br />
紺轟緥3:
location ~* .(gif|jpg|jpeg)$ {
# matches any request ending in gif, jpg, or jpeg. However, all
# requests to the /images/ directory will be handled by
}
# 鍖歸厤浠諱綍宸?gif銆乯pg 鎴?jpeg 緇撳熬鐨勮姹傘?/strong>
涓冦?Nginx expires
1錛庢牴鎹枃浠剁被鍨媏xpires
1. 閽堝涓嶅悓鐨勬枃浠剁被鍨?/p>
1. Nginx 韜喚璇侀獙璇?/p>
濡傦紝Nginx涓嬬姝㈣闂?.txt鏂囦歡錛岄厤緗柟娉曞涓?
紱佹璁塊棶鏌愪釜鐩綍
4. Nginx 涓嬭澆闄愬埗騫跺彂鍜岄熺巼
銆愭敞銆?span style="color: #008000;">limit_zone linuxtone $binary_remote_addr 10m; 榪欎釜鍙互瀹氫箟鍦ㄤ富鐨?/span>
5. Nginx 瀹炵幇Apache涓鏍風(fēng)洰褰曞垪琛?/p>
鍗併?nbsp; Nginx 鏃ュ織澶勭悊
1.Nginx 鏃ュ織鍒囧壊
#contab -e
59 23 * * * /usr/local/sbin/logcron.sh /dev/null 2>&1
[root@count ~]# cat /usr/local/sbin/logcron.sh
2.鍒╃敤AWSTATS鍒嗘瀽NGINX鏃ュ織
璁劇疆濂絅ginx鏃ュ織鏍煎紡,浠嶅悗鍒╃敤awstats榪涜鍒嗘瀽.
璇峰弬鑰? http://bbs.linuxtone.org/thread-56-1-1.html
3. Nginx 濡備綍涓嶈褰曢儴鍒嗘棩蹇?br />
鏃ュ織澶錛屾瘡澶╁ソ鍑犱釜G錛屽皯璁板綍涓浜涳紝涓嬮潰鐨勯厤緗啓鍒皊erver{}孌典腑灝卞彲浠ヤ簡
location ~ .*.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$
{
access_log off;
}
鍗佷竴銆丯ginx Cache鏈嶅姟閰嶇疆
濡傛灉闇瑕佸皢鏂囦歡緙撳瓨鍒版湰鍦幫紝鍒欓渶瑕佸鍔犲涓嬪嚑涓瓙鍙傛暟錛?/p>
鍦ㄧ粡榪囦笂涓姝ラ厤緗箣鍚庯紝铏界劧鏂囦歡琚紦瀛樺埌浜嗘湰鍦扮鐩樹笂錛屼絾姣忔璇鋒眰浠嶄細(xì)鍚戣繙绔媺鍙栨枃浠訛紝涓轟簡閬垮厤鍘昏繙绔媺鍙栨枃浠訛紝蹇呴』淇敼
鏇村鏇撮珮綰х殑搴旂敤鍙互鐮旂┒ncache,璇︾粏璇峰弬鐓?a target="_blank">http://bbs.linuxtone.org 閲宯cache鐩稿叧鐨勮創(chuàng)瀛?
鍗佷簩銆丯ginx 璐熻澆鍧囪
1. Nginx 璐熻澆鍧囪 鍩虹鐭ヨ瘑
nginx鐨剈pstream鐩墠鏀寔4縐嶆柟寮忕殑鍒嗛厤
1)銆佽疆璇紙榛樿錛?/span>
姣忎釜璇鋒眰鎸夋椂闂撮『搴忛愪竴鍒嗛厤鍒頒笉鍚岀殑鍚庣鏈嶅姟鍣紝濡傛灉鍚庣鏈嶅姟鍣╠own鎺夛紝鑳借嚜鍔ㄥ墧闄ゃ?/span>
2)銆亀eight
鎸囧畾杞鍑犵巼錛寃eight鍜岃闂瘮鐜囨垚姝f瘮錛岀敤浜庡悗绔湇鍔″櫒鎬ц兘涓嶅潎鐨勬儏鍐點(diǎn)?/span>
2)銆乮p_hash
姣忎釜璇鋒眰鎸夎闂甶p鐨刪ash緇撴灉鍒嗛厤錛岃繖鏍鋒瘡涓瀹㈠浐瀹氳闂竴涓悗绔湇鍔″櫒錛屽彲浠ヨВ鍐硈ession鐨勯棶棰樸?/span>
3)銆乫air錛堢涓夋柟錛?/span>
鎸夊悗绔湇鍔″櫒鐨勫搷搴旀椂闂存潵鍒嗛厤璇鋒眰錛屽搷搴旀椂闂寸煭鐨勪紭鍏堝垎閰嶃?
4)銆乽rl_hash錛堢涓夋柟錛?/span>
2. Nginx 璐熻澆鍧囪 瀹炰緥1
姣忎釜璁懼鐨勭姸鎬佽緗負(fù):
a) down 琛ㄧず鍗曞墠鐨剆erver鏆傛椂涓嶅弬涓庤礋杞?/span>
b) weight 榛樿涓?.weight瓚婂ぇ錛岃礋杞界殑鏉冮噸灝辮秺澶с?/span>
c) max_fails 錛氬厑璁歌姹傚け璐ョ殑嬈℃暟榛樿涓?.褰撹秴榪囨渶澶ф鏁版椂錛岃繑鍥瀙roxy_next_upstream 妯″潡瀹氫箟鐨勯敊璇?/span>
d) fail_timeout:max_fails嬈″け璐ュ悗錛屾殏鍋滅殑鏃墮棿銆?/span>
e) backup錛?鍏跺畠鎵鏈夌殑闈瀊ackup鏈哄櫒down鎴栬呭繖鐨勬椂鍊欙紝璇鋒眰backup鏈哄櫒銆傛墍浠ヨ繖鍙版満鍣ㄥ帇鍔涗細(xì)鏈杞匯?/span>
nginx鏀寔鍚屾椂璁劇疆澶氱粍鐨勮礋杞藉潎琛★紝鐢ㄦ潵緇欎笉鐢ㄧ殑server鏉ヤ嬌鐢ㄣ?br />
client_body_in_file_only 璁劇疆涓篛n 鍙互璁瞔lient post榪囨潵鐨勬暟鎹褰曞埌鏂囦歡涓敤鏉ュ仛debug
client_body_temp_path 璁劇疆璁板綍鏂囦歡鐨勭洰褰?鍙互璁劇疆鏈澶?灞傜洰褰?br />
location 瀵筓RL榪涜鍖歸厤.鍙互榪涜閲嶅畾鍚戞垨鑰呰繘琛屾柊鐨勪唬鐞?璐熻澆鍧囪
3. Nginx 璐熻澆鍧囪 瀹炰緥 2
鎸夎闂畊rl鐨刪ash緇撴灉鏉ュ垎閰嶈姹傦紝浣挎瘡涓猽rl瀹氬悜鍒板悓涓涓悗绔湇鍔″櫒錛屽悗绔湇鍔″櫒涓虹紦瀛樻椂姣旇緝鏈夋晥,涔熷彲浠ョ敤浣滄彁楂楽quid緙撳瓨鍛戒腑鐜?
綆鍗曠殑璐熻澆鍧囩瓑瀹炰緥:
#vi nginx.conf //nginx涓婚厤緗枃浠舵牳蹇冮厤緗?/p>
鍗佷笁銆丯ginx綆鍗曚紭鍖?/strong>
1. 鍑忓皬nginx緙栬瘧鍚庣殑鏂囦歡澶у皬 (Reduce file size of nginx)
榛樿鐨刵ginx緙栬瘧閫夐」閲屽眳鐒舵槸鐢╠ebug妯″紡(-g)鐨勶紙debug妯″紡浼?xì)鎻掑叆寰堝璺燀t拰ASSERT涔嬬被錛夛紝緙栬瘧浠ュ悗涓涓猲ginx鏈夊ソ鍑犲厗銆傚幓鎺塶ginx鐨刣ebug妯″紡緙栬瘧錛岀紪璇戜互鍚庡彧鏈夊嚑鐧綤
鍦?auto/cc/gcc錛屾渶鍚庡嚑琛屾湁錛?br />
# debug
2. 淇敼Nginx鐨刪eader浼鏈嶅姟鍣?br />
1) 淇敼nginx.h
#vi nginx-0.7.30/src/http/ngx_http_header_filter_module.c
灝嗗涓?/p>
#vi nginx-0.7.30/src/http/ngx_http_special_response.c
灝嗗涓嬶細(xì)
404閿欒鐨勬椂鍊欐樉紺烘晥鏋滃浘錛堝鏋滄病鏈夋寚瀹氶敊璇〉鐨勮瘽錛夛細(xì)
榛樿nginx浣跨敤鐨凣CC緙栬瘧鍙傛暟鏄?O
闇瑕佹洿鍔犱紭鍖栧彲浠ヤ嬌鐢ㄤ互涓嬩袱涓弬鏁?br />
--with-cc-opt='-O3'
--with-cpu-opt=opteron
浣垮緱緙栬瘧閽堝鐗瑰畾CPU浠ュ強(qiáng)澧炲姞GCC鐨勪紭鍖?
姝ゆ柟娉曚粎瀵規(guī)ц兘鏈夋墍鏀瑰杽騫朵笉浼?xì)鏈夊緢澶х殑鎬ц兘鎻愬崌錛屼緵鏈嬪弸浠弬鑰?
CPUD綾誨瀷紜畾: # cat /proc/cpuinfo | grep "model name"
緙栬瘧浼樺寲鍙傛暟鍙傝冿細(xì)http://en.gentoo-wiki.com/wiki/Safe_Cflags
4.Tcmalloc浼樺寲Nginx 鎬ц兘
./configure --with-google_perftools_module
鍦ㄤ富閰嶇疆鏂囦歡鍔犲叆nginx.conf 娣誨姞:
google_perftools_profiles /path/to/profile;
5.鍐呮牳鍙傛暟浼樺寲
# vi /etc/sysctl.conf #鍦ㄦ湯灝懼鍔犱互涓嬪唴瀹癸細(xì)
鍗佸洓銆佸浣曟瀯寤洪珮鎬х殑LEMP
璇峰弬瑙? http://www.linuxtone.org/lemp/lemp.pdf
1銆佹彁渚涘畬鏁寸殑閰嶇疆鑴氭湰涓嬭澆錛?a target="_blank">http://www.linuxtone.org/lemp/scripts.tar.gz
2銆佹彁渚汵GINX甯歌閰嶇疆鑼冧緥鍚?铏氭嫙涓繪満錛岄槻鐩楅摼錛孯ewrite,璁塊棶鎺у埗錛岃礋杞藉潎琛?br />
Discuz鐩稿叧紼嬪簭闈欐佸寲鍙?qiáng)绛壗{?,浣犲彧瑕佺◢紼嶄慨鏀瑰嵆鍙嚎涓婂簲鐢ㄣ?3銆佸皢鍘熺増鐨剎cache鏇挎崲鎴怑A錛屽茍鎻愪緵鐩稿叧綆鍗曡皟浼樿剼鏈強(qiáng)閰嶇疆鏂囦歡銆?br />
鏇村鐨勫強(qiáng)鏇存柊璧勬枡璇峰叧娉? http://www.linuxtone.org
鍗佷簲銆丯ginx鐩戞帶
1銆?nbsp; RRDTOOL+Perl鑴氭湰鐢誨浘鐩戞帶
鍏堝畨瑁呭ソrrdtool 錛屽叧浜巖rdtool鏈枃涓嶄綔浠嬬粛錛屽叿浣撳畨瑁呰鍙傜収linuxtone鐩戞帶鐗堝潡.
#cd /usr/local/sbnin
#wget http://blog.kovyrin.net/files/mrtg/rrd_nginx.pl.txt
#mv rrd_nginx.pl.txt rrd_nginx.pl
#chmod a+x rrd_nginx.pl
#vi rrd_nginx.pl //閰嶇疆鑴氭湰鏂囦歡璁劇疆濂借礬寰?br />
#!/usr/bin/perl
use RRDs;
use LWP::UserAgent;
# define location of rrdtool databases
my $rrd = '/data/www/wwwroot/nginx/rrd';
# define location of images
my $img = '/data/www/wwwroot/nginx/html';
# define your nginx stats URL
my $URL = "http://219.232.244.13/nginx_status";
…………
銆愭敞銆戞牴鎹嚜宸卞叿浣撶殑鐘跺喌淇敼鐩稿簲鐨勮礬寰?
#crontab –e //鍔犲叆濡備笅
* * * * * /usr/local/sbin/rrd_nginx.pl
閲嶅惎crond鍚庯紝閫氳繃閰嶇疆nginx铏氭嫙涓繪満鎸囧埌/data/www/wwwroot/nginx/html鐩綍錛岄氳繃crond鑷姩鎵цperl鑴氭湰浼?xì)鐢熸垚寰堝鍥剧?
http://xxx/connections-day.png鍗沖彲鐪嬪埌鏈嶅姟鍣ㄧ姸鎬佸浘銆?br />
2銆?nbsp; 瀹樻柟Nginx-rrd 鐩戞帶鏈嶅姟錛堝铏氭嫙涓繪満錛夛紙鎺ㄨ崘錛?br />
緗戝潃錛?a target="_blank">http://www.nginx.eu/nginx-rrd.html
姝よВ鍐蟲柟妗堝叾瀹炴槸鍩轟簬涓婅堪鐩戞帶鏂規(guī)鐨勪竴涓敼榪涘拰澧炲己錛屽悓鏍峰厛瀹夎濂絩rdtool榪欎釜鐢誨浘宸ュ叿鍜岀浉搴旂殑perl妯″潡鍐嶅仛濡備笅鎿嶄綔錛?br />
# yum install perl-HTML*
鍏堝緩绔嬪ソ鐢熸垚鐨勫簱瀛樺拰鍥劇墖瀛樻斁褰?/p>
SEVERS_URL 鏍煎紡 http://domain1/nginx_status;domain1 http://domain2/nginx_status;domain2
榪欑鏍煎紡鐩戞帶澶氳櫄鎷熶富鏈鴻繛鎺ョ姸鎬侊細(xì)
閲嶇偣鍚痗rond鏈嶅姟錛屼粛鍚庨氳繃http://219.32.205.13/nginx/html/ 鍗沖彲璁塊棶銆傞厤緗繃紼嬪緢綆鍗曪紒
3銆?nbsp; CACTI妯℃澘鐩戞帶Nginx
鍒╃敤Nginx_status鐘舵佹潵鐢誨浘瀹炵幇CACTI鐩戞帶
nginx緙栬瘧鏃跺厑璁竓ttp_stub_status_module
# vi /usr/local/nginx/conf/nginx.conf
cacti_graph_template_nginx_clients_stat.xml
cacti_graph_template_nginx_sockets_stat.xml
鍗佸叚銆佸父瑙侀棶棰樹笌閿欒澶勭悊
1銆?00 bad request閿欒鐨勫師鍥犲拰瑙e喅鍔炴硶
閰嶇疆nginx.conf鐩稿叧璁劇疆濡備笅.
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
鏍規(guī)嵁鍏蜂綋鎯呭喌璋冩暣錛屼竴鑸傚綋璋冩暣鍊煎氨鍙互銆?br />
2銆丯ginx 502 Bad Gateway閿欒
proxy_next_upstream error timeout invalid_header http_500 http_503;
鎴栬呭皾璇曡緗?
large_client_header_buffers 4 32k;
3銆丯ginx鍑虹幇鐨?13 Request Entity Too Large閿欒
榪欎釜閿欒涓鑸湪涓婁紶鏂囦歡鐨勬椂鍊欎細(xì)鍑虹幇錛?br />
緙栬緫Nginx涓婚厤緗枃浠禢ginx.conf錛屾壘鍒癶ttp{}孌碉紝娣誨姞
client_max_body_size 10m; //璁劇疆澶氬ぇ鏍規(guī)嵁鑷繁鐨勯渶姹備綔璋冩暣.
濡傛灉榪愯php鐨勮瘽榪欎釜澶у皬client_max_body_size瑕佸拰php.ini涓殑濡備笅鍊肩殑鏈澶у間竴鑷存垨鑰呯◢澶э紝榪欐牱灝變笉浼?xì)鍥犱负鎻愪氦鏁版嵁澶畯涓嶄竴鑷村嚭鐜扮殑閿欒銆?br />
post_max_size = 10M
upload_max_filesize = 2M
4銆佽В鍐?04 Gateway Time-out(nginx)
閬囧埌榪欎釜闂鏄湪鍗囩駭discuz璁哄潧鐨勬椂鍊欓亣鍒扮殑
涓鑸湅鏉? 榪欑鎯呭喌鍙兘鏄敱浜巒ginx榛樿鐨刦astcgi榪涚▼鍝嶅簲鐨勭紦鍐插尯澶皬閫犳垚鐨? 榪欏皢瀵艱嚧fastcgi榪涚▼琚寕璧? 濡傛灉浣犵殑fastcgi鏈嶅姟瀵硅繖涓寕璧峰鐞嗙殑涓嶅ソ, 閭d箞鏈鍚庡氨鏋佹湁鍙兘瀵艱嚧504 Gateway Time-out
鐜板湪鐨勭綉绔? 灝ゅ叾鏌愪簺璁哄潧鏈夊ぇ閲忕殑鍥炲鍜屽緢澶氬唴瀹圭殑, 涓涓〉闈㈢敋鑷蟲湁鍑犵櫨K銆?br />
榛樿鐨刦astcgi榪涚▼鍝嶅簲鐨勭紦鍐插尯鏄?K, 鎴戜滑鍙互璁劇疆澶х偣
鍦╪ginx.conf閲? 鍔犲叆錛?fastcgi_buffers 8 128k
榪欒〃紺鴻緗甪astcgi緙撳啿鍖轟負(fù)8×128k
褰撶劧濡傛灉鎮(zhèn)ㄥ湪榪涜鏌愪竴欏瑰嵆鏃剁殑鎿嶄綔, 鍙兘闇瑕乶ginx鐨勮秴鏃跺弬鏁拌皟澶х偣錛屼緥濡傝緗垚60縐掞細(xì)send_timeout 60;
鍙槸璋冩暣浜嗚繖涓や釜鍙傛暟, 緇撴灉灝辨槸娌℃湁鍐嶆樉紺洪偅涓秴鏃? 鍙互璇存晥鏋滀笉閿? 浣嗘槸涔熷彲鑳芥槸鐢變簬鍏朵粬鐨勫師鍥? 鐩墠鍏充簬nginx鐨勮祫鏂欎笉鏄緢澶? 寰堝浜嬫儏閮介渶瑕侀暱鏈熺殑緇忛獙绱鎵嶆湁緇撴灉, 鏈熷緟鎮(zhèn)ㄧ殑鍙戠幇鍝?
5銆佸浣曚嬌鐢∟ginx Proxy
鏈嬪弸涓鍙版湇鍔″櫒榪愯tomcat 涓?080绔彛,IP:192.168.1.2:8080,鍙︿竴鍙版満鍣↖P:192.168.1.8. 鏈嬪弸鎯抽氳繃璁塊棶http://192.168.1.8鍗沖彲璁塊棶tomcat鏈嶅姟.閰嶇疆濡備笅:
鍦?92.168.1.8鐨刵ginx.conf涓婇厤緗涓?
access_log /dev/null; error_log /dev/null;
鍗佷竷銆佺浉鍏寵祫婧愪笅杞?/strong>
1.nginx閰嶇疆紺轟緥鍙?qiáng)鑴氭湰涓嬭?
# wget http://www.linuxtone.org/lemp/scripts.tar.gz #姝よ剼鏈寖渚嬪畾鏈熸洿鏂?
铏借 Nginx 鏈韓鐨勬ц兘璺熺郴緇熷崰鐢ㄥ凡緇忓仛鍒板緢浼樼銆?/p>
$ ./beanstalkd -d -l 10.0.1.5 -p 11300
This starts up beanstalkd
as a daemon listening on address 10.0.1.5, port 11300.
Here’s an example in Ruby (see the client libraries to find your favorite language).
First, have one process put a job into the queue:
beanstalk = Beanstalk::Pool.new(['10.0.1.5:11300'])
beanstalk.put('hello')
Then start another process to take jobs out of the queue and run them:
beanstalk = Beanstalk::Pool.new(['10.0.1.5:11300'])
loop do
job = beanstalk.reserve
puts job.body # prints "hello"
job.delete
end
Many thanks to memcached for providing inspiration for simple protocol design and for the structure of the documentation. Not to mention a fantastic piece of software!