亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 強(qiáng)大的Nginx你究竟會用多少? [打印本頁]

作者: crazyhadoop    時間: 2016-04-08 16:22
標(biāo)題: 強(qiáng)大的Nginx你究竟會用多少?
獲獎詳情:http://72891.cn/thread-4245471-1-1.html


話題背景:

        Nginx作為強(qiáng)大的web服務(wù)器現(xiàn)在已經(jīng)大量在生產(chǎn)環(huán)境中使用,好評如潮,根本原因在于Nginx本身優(yōu)良的高性能架構(gòu)設(shè)計,處理響應(yīng)快,并發(fā)高,可靠性高,可擴(kuò)展性好。近年來,為了更加高效的利用Nginx,大家紛紛開發(fā)Nginx插件來進(jìn)一步提高和應(yīng)用nginx。其中最優(yōu)秀的一個插件套裝就是openresty,這個套裝用lua和Nginx 插件強(qiáng)力的擴(kuò)展了Nginx的功能,F(xiàn)在是公認(rèn)的高并發(fā)項(xiàng)目的好工具。



討論話題:

根據(jù)使用情況就下列幾點(diǎn)分享一下自己的使用心得,或者借此機(jī)會了解一下強(qiáng)大的Nginx吧




活動時間:2016年4月11日—5月11日


獎勵設(shè)置

活動結(jié)束后,我們將選取5位討論精彩的同學(xué),各送一本《深入理解Nginx:模塊開發(fā)與架構(gòu)解析(第2版)》技術(shù)圖書。



作者: 陶輝   
叢書名: Linux/Unix技術(shù)叢書
出版社:機(jī)械工業(yè)出版社
ISBN:9787111526254
上架時間:2016-1-28
出版日期:2016 年2月
開本:16開
頁碼:624
版次:2-1
所屬分類:計算機(jī) > 軟件與程序設(shè)計 > 網(wǎng)絡(luò)編程 > 綜合

內(nèi)容簡介:本書致力于說明開發(fā)Nginx模塊的必備知識,第1版發(fā)行以后,深受廣大讀者的喜愛.然而由于Ng,nx功能繁多且性能強(qiáng)大,以致必須了解的基本技能也很龐雜,而第1版成書匆忙,缺失了幾個進(jìn)階的技巧描述,因此第2版在此基礎(chǔ)上進(jìn)行了完善。

書中首先通過介紹官方Nginx的基本用法和配置規(guī)則,幫助讀者了解一般Nginx模塊的用法,然后重點(diǎn)介紹了女口何開發(fā)HTTP模塊(含HTTP過濾模塊)來得到定制化的Nginx,其中包括開發(fā)—個功能復(fù)雜的模塊所需要了解的各種知識,并對內(nèi)存池的實(shí)現(xiàn)細(xì)節(jié)及TCP協(xié)議進(jìn)行了詳細(xì)介紹;接著,綜合Nginx框架代碼分析了Nginx架構(gòu)的設(shè)計理念和技巧,此外,還新增了如何在模塊中支持HTTP變量,以及與slab共享內(nèi)存等相關(guān)的內(nèi)容,相信通過完善,可進(jìn)一步幫助讀者更好地開發(fā)出功能豐富、性能—流的Nginx模塊。

試讀樣章: 1-3Z.pdf (3.87 MB, 下載次數(shù): 1056)


作者: cjfeii    時間: 2016-04-08 16:28
本帖最后由 cjfeii 于 2016-04-12 10:23 編輯

必須頂啊

==================
如何在實(shí)戰(zhàn)中熟練使用Nginx?
我們在業(yè)務(wù)中主要用到Nginx以下的功能:
1. 反向代理
2. 負(fù)載均衡
3. 業(yè)務(wù)模塊開發(fā):nginx+lua(openresty)
4. 等
主要是針對不同nginx不同的用法以及服務(wù)器具體的配置,采用不同的調(diào)整策略。

如何發(fā)揮Nginx的性能?
通過對操作系統(tǒng)以及Nginx本身的參數(shù)調(diào)整,以充分發(fā)揮Nginx的性能:
1. 操作系統(tǒng)主要需要打開最大鏈接數(shù)的限制,以及TCP協(xié)議棧的調(diào)優(yōu)(通過iperf、netperf等工具測試);
```
# Increase system IP port limits to allow for more connections
net.ipv4.ip_local_port_range = 2000 65000
net.ipv4.tcp_window_scaling = 1
# number of packets to keep in backlog before the kernel starts dropping them
net.ipv4.tcp_max_syn_backlog = 3240000
# increase socket listen backlog
net.core.somaxconn = 3240000
net.ipv4.tcp_max_tw_buckets = 1440000
# Increase TCP buffer sizes
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_congestion_control = cubic
```
2. Nginx本身的調(diào)優(yōu)包括worker進(jìn)程數(shù)、worker的鏈接數(shù)以及其他配置的優(yōu)化,下面主要是針對高并發(fā)nginx+lua的一些優(yōu)化:
```
worker_processes 24;
worker_rlimit_nofile 200000;
worker_connections 4000;
use epoll;
multi_accept on;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
open_file_cache_errors on;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
keepalive_requests 100000;
reset_timedout_connection on;
...
```
上面的參數(shù)中的數(shù)字只是在我的測試環(huán)境驗(yàn)證的,這個你需要根據(jù)你的服務(wù)器進(jìn)行調(diào)整。
可以通過tsung、siege等壓測工具測試出最優(yōu)的參數(shù)設(shè)置。


如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
雖然沒有寫過Nginx的插件,但是做過基于lua的模塊開發(fā),通過了解Nginx原理,理解lua模塊的加載過程,對lua的模塊開發(fā)也能起到很好的作用。
作者: action08    時間: 2016-04-11 14:20
本帖最后由 action08 于 2016-04-11 14:21 編輯

除了web和負(fù)載均衡其他不知道啊,樓主教教我
作者: shenlanyouyu    時間: 2016-04-11 14:55
好書,果斷頂之,正在用
作者: Godbach    時間: 2016-04-11 14:59
回復(fù) 1# crazyhadoop

好活動,支持!


   
作者: jieforest    時間: 2016-04-11 15:12
本帖最后由 jieforest 于 2016-04-16 11:04 編輯

這本書不錯。。


1、如何在實(shí)戰(zhàn)中熟練使用Nginx?
要熟練使用Nginx并不難。
第一步,弄清楚Nginx的安裝部署與運(yùn)行
Nginx在Linux下的安裝有一些難度,需要具備Linux基礎(chǔ)知識,而且還有一些依賴關(guān)系,需安裝pcre、zlib、openssl等。
第二步,理解Nginx的配置文件nginx.conf中各個配置指令的含義
只有理解了配置文件,才能正確的、很好的使用Nginx。
完成這兩步后,已經(jīng)可以說能夠熟練使用Nginx了。
第三步,研究Nginx的優(yōu)化技術(shù)
針對各種具體的業(yè)務(wù)場景,對Nginx配置做相應(yīng)的調(diào)優(yōu),盡可能壓榨、發(fā)揮Nginx的性能。
到了這一步,Nginx的使用已經(jīng)算高段了。
第四步,開發(fā)Nginx插件或模塊來滿足自己的業(yè)務(wù)需求
Nginx并非萬能的,即使Nginx的社區(qū)很龐大,也無法提供包治百病的解決方案。面對某些具體的需求,可能會遇到Nginx達(dá)不到預(yù)期效果的問題。遇到這種情況,就需要深入Nginx架構(gòu)和源碼,按自己的需求開放插件或模塊了。
到這一步,已經(jīng)可以算Nginx牛人了。

2、如何發(fā)揮Nginx的性能?
Nginx的優(yōu)化技巧有很多,根據(jù)不同的應(yīng)用場景也有很多配置方案。
這里談一點(diǎn)通用的優(yōu)化技巧。
1)工作進(jìn)程數(shù)(Worker Processes)
工作進(jìn)程數(shù)通常設(shè)置為等同于CPU的核數(shù)。
2)工作連接數(shù)(Worker Connections)
工作連接數(shù)告訴工作進(jìn)程,Nginx的每個工作進(jìn)程在同一時刻可以服務(wù)多少用戶請求。默認(rèn)值為768。
要注意Nginx服務(wù)器的用戶最大請求數(shù)等于:工作進(jìn)程數(shù)×工作連接數(shù)
參考配置:
worker_processes 8;
worker_connections 4096;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 100000;
3)客戶端緩沖
client_body_buffer_size
客戶端Body部分的緩沖區(qū)尺寸,這意味著發(fā)送到Nginx的任何POST動作,而POST動作是典型的表單提交。
client_header_buffer_size
類似于上面的指令,不過它只是處理客戶端Header部分的緩沖區(qū)尺寸。無論是哪種需求,通常此尺寸設(shè)置為1K就足夠了。
client_max_body_size
客戶端請求允許的Body部分的最大尺寸。如果客戶端發(fā)送的請求的Body部分超過此值,那么Nginx就會返回413錯誤或“Request Entity Too Large”(請求實(shí)體太大)的消息。
large_client_header_buffers
客戶端大Header部分的最大緩沖區(qū)數(shù)量和緩沖區(qū)尺寸。
通常是這么配置的:
client_body_buffer_size 10K;
client_header_buffer_size 1K;
client_max_body_size 8m;
large_client_header_buffers 2 1K;
4)超時
超時設(shè)置也能顯著提高性能。
client_body_timeout指令和client_header_timeout指令是讓服務(wù)器在客戶端請求后,等待客戶端的Header部分或Body部分發(fā)送完的設(shè)置。如果客戶端既不發(fā)送Header部分又不發(fā)送Body部分,那么服務(wù)器會返回408錯誤或“Request time out”(請求超時)的錯誤消息。
keepalive_timeout指令讓服務(wù)器保持與客戶端的活動連接維持指定的時間。簡單地說,Nginx將在指定時間到來后關(guān)閉客戶端的連接。
最后,send_timeout指令建立不是答案的全部轉(zhuǎn)移,而只與讀兩種操作; 如果此時客戶端后,會采取什么都沒有,那么Nginx的是關(guān)閉連接。
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
5)Gzip壓縮
GZIP可以幫助減少網(wǎng)絡(luò)傳輸Nginx的交易量。但是,要注意增加gzip_comp_level太高作為服務(wù)器將開始浪費(fèi)CPU周期。
......

3、如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
這里只提一點(diǎn)。
最好是有真實(shí)的需求,通過真實(shí)的需求來驅(qū)動開發(fā)Nginx插件。這樣進(jìn)步更快些。

作者: hbsycw    時間: 2016-04-11 17:03
好話題,斗膽參與下:

1 如何在實(shí)戰(zhàn)中熟練使用Nginx?
  答:如何在實(shí)戰(zhàn)中熟練使用Nginx,我覺得主要有兩點(diǎn):
      1 對Nginx的角色認(rèn)識,這涉及到對Internet、對WEB、對HTTP的技術(shù)體系認(rèn)識和理解;
      2 對Nginx的功能認(rèn)識,這涉及到對高并發(fā)、反向代理、負(fù)載均衡等技術(shù)功能的認(rèn)識和實(shí)踐。
       總之,多讀在線文檔,多實(shí)踐,是熟練使用Nginx的關(guān)鍵。

2 如何發(fā)揮Nginx的性能?
  答:Nginx是一款輕量級、高性能的WEB服務(wù)器軟件,在互聯(lián)網(wǎng)化的今天,在搭建WEB的技術(shù)架構(gòu)中,Nginx作為支持高并發(fā)的服務(wù)器軟件,而受到大家的廣泛喜愛和使用。要發(fā)揮Nginx的性能,我覺得首先要有好的機(jī)器硬件配置(內(nèi)存要大),這個就不贅述;其次,要有合理的技術(shù)架構(gòu),比如Server分層+集群+負(fù)責(zé)均衡等,具體可參考業(yè)界電商架構(gòu)實(shí)踐。

3 如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
  答:Nginx是用C語言來編寫開發(fā)的,因此要編寫Nginx插件首先還是要有較強(qiáng)的C語言編程能力,對Nginx主要的類型和常量(定義在/src/core目錄下的多個頭文件)要結(jié)合文檔弄懂;其次,就是對數(shù)據(jù)結(jié)構(gòu)和算法的深入理解和實(shí)現(xiàn),其實(shí)一切都是基本功。
作者: lyhabc    時間: 2016-04-11 18:02
只會用,不會開發(fā)        
作者: laputa73    時間: 2016-04-12 08:49
聽說nginx的新版本也開始支持自有腳本和socket代理了。
web層如果可以操作redis,file,功能就很強(qiáng)大了
有發(fā)展為app server的潛質(zhì)。
tengine和openresty都是很好的擴(kuò)展。
不知道是否已有好的輕量級web框架實(shí)現(xiàn)。
作者: fenyun689    時間: 2016-04-12 08:52
簡單的用過Nginx,求本書好好學(xué)學(xué)。
  
如何在實(shí)戰(zhàn)中熟練使用Nginx?
      baidu 查資料。

如何發(fā)揮Nginx的性能?
      不知道

如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
      不會。
作者: demilich    時間: 2016-04-12 09:30
好書           
作者: 王江玉    時間: 2016-04-12 09:52
參觀學(xué)習(xí)一下
作者: gaoyp27    時間: 2016-04-12 11:30
nginx 是個神奇的東東,研發(fā)出來為了郵件服務(wù)器使用,結(jié)果最知名的竟然是web和負(fù)載均衡,openresty通過老羅的錘子發(fā)布會認(rèn)識,
nginx 在實(shí)際應(yīng)用中就不要怕折騰,強(qiáng)壯的很,很少會出問題,不折騰你就會永遠(yuǎn)守舊。
nginx的性能發(fā)揮還是需要一定的研究源碼的技術(shù),和對機(jī)器硬件的理解的。
作者: forgaoqiang    時間: 2016-04-12 13:32
恩 好活動 nginx可以當(dāng)做透明代理 插播廣告等 還可以緩存加速
作者: Purple_Grape    時間: 2016-04-12 17:12
nginx 是少數(shù)幾乎不用調(diào)優(yōu),就能發(fā)揮良好性能的軟件,主要?dú)w功于軟件設(shè)計NB。

作者: expert1    時間: 2016-04-12 17:16
mark
作者: heguangwu    時間: 2016-04-13 16:32
不懂純頂
作者: crazyhadoop    時間: 2016-04-14 08:26
回復(fù) 17# heguangwu


    學(xué)習(xí)一下哇
作者: crazyhadoop    時間: 2016-04-14 08:29
回復(fù) 6# jieforest


    大師分享一下應(yīng)用經(jīng)驗(yàn)哇
作者: heguangwu    時間: 2016-04-14 10:31
吾生也有涯,而知也無涯。以有涯隨無涯,殆已
回復(fù) 18# crazyhadoop


   
作者: duoduoluo_z    時間: 2016-04-14 11:15
我看我還是自己買一本好啦~
在搭建fastdfs系統(tǒng)時用到了,只用到反向代理,雖然不知道它怎么自己實(shí)現(xiàn)的。。
和一個fdfs擴(kuò)展,并沒有用到進(jìn)一步的功能。
不過縮略圖這塊需要研究研究,opernresty+lua什么的。
作者: cjfeii    時間: 2016-04-14 16:04
OpenResty 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內(nèi)部集成了大量精良的 Lua 庫、第三方模塊以及大多數(shù)的依賴項(xiàng)。用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動態(tài) Web 應(yīng)用、Web 服務(wù)和動態(tài)網(wǎng)關(guān)。
官網(wǎng)是:openresty.org/

回復(fù) 21# duoduoluo_z


   
作者: whutchao    時間: 2016-04-15 09:37
好書。!  作者陶輝的博客多少啊  他在CSDN上面公布的那個博客  現(xiàn)在好像不能訪問了  他寫的高性能網(wǎng)絡(luò)專題博客內(nèi)容詳實(shí)  對我?guī)椭艽?nbsp; 
作者: 撒加    時間: 2016-04-15 10:36
1、如何在實(shí)戰(zhàn)中熟練使用Nginx?
我現(xiàn)在雖然不是使用官方的Nginx,但是用的Tengine本身基于Nginx進(jìn)行了高級開發(fā),能不能熟練使用我個人認(rèn)為主要看公司的業(yè)務(wù)能夠用到Nginx的哪些功能或者模塊,以及Nginx在業(yè)務(wù)中的應(yīng)用模式,比如利用Nginx來做靜態(tài)資源服務(wù)器與利用Nginx來做Proxy Server或者FastCGI Server的時候要求都不一樣,用到的模塊、參數(shù)差很多,直接可以導(dǎo)致Nginx的并發(fā)能力。另一方面用好Nginx還需要經(jīng)常閱讀官方文檔(有時候新的版本會帶入新的參數(shù)及新的變量),理解參數(shù)的意思,合理的監(jiān)控Nginx的工作狀態(tài)。

2、如何發(fā)揮Nginx的性能?
這個問題跟第一個問題應(yīng)該是呼應(yīng)的,想發(fā)揮Nginx的性能,首先要了解影響Nginx性能的因素有哪些,例如機(jī)房給的帶寬,如果需求是1W并發(fā),站點(diǎn)每個頁面的平均大小是50K,給100M帶寬無論如何也不可能達(dá)到1W并發(fā)的。再比如平均resonse的大小是50K,如果Nginx服務(wù)器的內(nèi)存只有4G,你想讓Nginx能夠維持10W的連接,顯然也是不可能的。
能夠使用Nginx的地方,肯定都是對外提供Web服務(wù)的,所以資源不是放在IDC機(jī)房,就是放在云上,這樣除了帶寬,還有路由,例如一個上海的人訪問的網(wǎng)站位于北京,如果路由是上海--->深圳--->黑龍江--->北京,那么Nginx的性能依然發(fā)揮不出來。
除此以外,使用硬件服務(wù)器的時候,影響Nginx性能的因素還有CPU核心數(shù)、內(nèi)存的大小、磁盤IO、網(wǎng)卡的小包性能。就Nginx本身而言還與安裝方式、參數(shù)的設(shè)置、是否合理利用tmpfs,各種cache有關(guān)。如果從這幾個方面考慮到各種因素的存在,有針對性的去消除或者減弱,Nginx還是可以發(fā)揮更好的性能。
這里打個小廣告,我個人正在持續(xù)更新Tengine/Nginx性能優(yōu)化及雜談的文章,可以在百度里搜索《Tengine/Nginx性能優(yōu)化及雜談》就可找到


3、如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
這個方面我個人認(rèn)為,研發(fā)的同學(xué)使用Nginx通常可以考慮編寫插件來提高編程能力,作為我等搞基礎(chǔ)架構(gòu)運(yùn)維的人而言,學(xué)習(xí)LUA,并在理解整個HTTP請求處理過程,NGINX處理過程的基礎(chǔ)上,使用LUA還是可以更加靈活的使用Nginx


以上純屬個人觀點(diǎn)。
作者: incle    時間: 2016-04-15 11:09
Nginx確實(shí)好用。
作者: 高防服務(wù)器    時間: 2016-04-15 12:17
提示: 該帖被管理員或版主屏蔽
作者: h101com    時間: 2016-04-15 15:22
先頂一個!   好書好話題!

個人從nginx 0.* 系列用到1.× 系列,  從nginx 用到 tengine,再到春哥的openresty ,也算是忠實(shí)粉絲一個了吧!


1.如何在實(shí)戰(zhàn)中熟練使用Nginx?

在企業(yè)中目前用到的幾乎涉及所有業(yè)務(wù), 從前端負(fù)載均衡,到后端jsp+static動靜分離,再到專用圖片服務(wù)器,  抗壓力,防攻擊,等等;
從業(yè)務(wù)需求的rewrite到訪問權(quán)限控制,從訪問慢到一個一個參數(shù)調(diào)整測試到訪問快,  nginx系列與openresty 強(qiáng)大的模塊給了業(yè)務(wù)上給了強(qiáng)有力支持!


2. 如何發(fā)揮Nginx的性能?

都是心酸史。。系統(tǒng)內(nèi)核參數(shù)調(diào)整...  在業(yè)務(wù)上各種調(diào)優(yōu),反向代理,參數(shù),防攻擊測試,訪問慢調(diào)..防刷過嚴(yán)格調(diào)整。。反復(fù)測...

        limit_conn_zone $binary_re****
        limit_req_zone  $binary_****
        limit_req_zone  $cookie_tok****
        limit_req_zone  $http_x_http_f****
        limit_req_zone  $binary_remo****
        limit_req_zone  $request****

        proxy_ignore_client_abort on;
        proxy_connect_timeout ****;
        proxy_read_timeout ****;
        proxy_send_timeout ****;
        proxy_buffer_size ****;
        proxy_buffers  ****;
        proxy_busy_buffers_size ****;
        proxy_temp_file_write_size ****;

3. 如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?

目前在用的openresty上大約加了20多個模塊,用到大約一半以上, 提高編程能力不敢說,只能有時候看看處理流程 ,暫時還沒有編寫Nginx插件。
作者: jieforest    時間: 2016-04-16 11:05
回復(fù) 19# crazyhadoop


    客氣了,分享了一點(diǎn)內(nèi)容在6樓。
作者: tklist    時間: 2016-04-16 11:19
好活動,mark下。
水平菜,說一下自己在實(shí)際項(xiàng)目中踩過的坑吧。
1: nginx408錯誤
解決辦法:修改了client_header_timeout 和 client_body_timeout 的值大小
2: nginx499錯誤
服務(wù)器出現(xiàn)慢請求,client主動關(guān)閉socket。解決辦法:client修改相關(guān)時間參數(shù)(c服務(wù))
實(shí)際項(xiàng)目中動手搞過的,主要就是在nginx里面根據(jù)uri 或者cookie做抽樣,路由到不同的后端服務(wù)或者給后端服務(wù)多傳遞一個參數(shù)(給后端服務(wù)抽樣使用)。
作者: Godbach    時間: 2016-04-16 22:23
回復(fù) 1# crazyhadoop

簡單分享個人之前對 nginx 的一些研究,比較零碎。

1. Nginx 的動態(tài)配置的處理

reload 的這種配置方式應(yīng)該是現(xiàn)在比較通用的做法。處理方式基本上就是
1)停止 listen 端口,舊有連接/session仍然老的配置上處理
2)load 新的配置,監(jiān)聽新配置對應(yīng)的端口,新連接就由新的 listen 處理
3)老的連接結(jié)束之后,將老的配置一并釋放掉

2. 驚群的處理以及 REUSEPORT
Nginx 通過 lock 的方式實(shí)現(xiàn)了多進(jìn)程間的互斥,避免了驚群效應(yīng)

此外,在支持了 REUSEPORT 的內(nèi)核上,其實(shí)驚群效應(yīng)就更容易避免了。因?yàn)槊總獨(dú)立進(jìn)程都可以 listen 相同的 IPORT。印象中有人提了類似的 patch,也就是先 fork,然后再 listen,好像 Nginx 官方?jīng)]有接受。不知道當(dāng)前最新的版本是否合并了。

3. Nginx 中一些可借鑒的代碼
比如 share mem 的操作,atomic 和 lock 的操作,CPU Affinity 的操作等等,都是可以用來作為借鑒的優(yōu)秀代碼。


   
作者: greatbll    時間: 2016-04-17 10:37
nginx的強(qiáng)大是無容置疑的,應(yīng)用的廣泛度也遠(yuǎn)超我們的想象,我們是一個大型物流企業(yè),整個機(jī)房大約200多臺服務(wù)器,互聯(lián)網(wǎng)站點(diǎn)及業(yè)務(wù)系統(tǒng)超過50個,我們用nginx主要做了 :
1)整合互聯(lián)網(wǎng)站點(diǎn)的發(fā)布管理:
利用proxy_pass反向代理了全部大部分的互聯(lián)網(wǎng)業(yè)務(wù)系統(tǒng),有以下優(yōu)勢:
- 節(jié)省互聯(lián)網(wǎng)IP資源
- 方便靈活的實(shí)現(xiàn)訪問控制
- 使用upstream實(shí)現(xiàn)負(fù)載分流及failover
- 簡單的waf(針對部分已經(jīng)攻擊及掃描探測進(jìn)行訪問阻止)
- 靜態(tài)資源的緩存以及壓縮,優(yōu)化訪問速度
- 錯誤頁面的重定向處理(部分軟件項(xiàng)目的錯誤頁面處理不友好,泄露部署信息,我們使用nginx對錯誤頁面做了重定向)
- https 發(fā)布
使用nginx整合發(fā)布管理,減少互聯(lián)網(wǎng)IP的使用,節(jié)省資源是一方面,方便了安全管理。日志集中日志管理與分析也非常方案。
不足:
   nginx無法實(shí)現(xiàn)NTLM身份驗(yàn)證的反向代理,我們有少量使用NTLM身份驗(yàn)證的業(yè)務(wù)系統(tǒng)使用nginx做發(fā)布有問題。貌似1.9.x以上的版本解決了類似問題,暫時待驗(yàn)證核實(shí)。

2)實(shí)現(xiàn)開發(fā)測試站點(diǎn)互聯(lián)網(wǎng)發(fā)布的集中管理
開發(fā)測試站點(diǎn)互聯(lián)網(wǎng)發(fā)布周期短,新增發(fā)布及關(guān)閉比較頻繁。我們使用nginx配置模版+shell腳本+web控制UI,使用nginx反代實(shí)現(xiàn)開發(fā)測試站點(diǎn)的自助管理。

3)nginx+php-fpm替代apache+php
在通過一個微信項(xiàng)目的壓力測試過程中,我們發(fā)現(xiàn)nginx+php-fpm的性能要遠(yuǎn)遠(yuǎn)優(yōu)于apache,所以目前大部分的php項(xiàng)目都使用nginx+php-fpm作為運(yùn)行環(huán)境。

4)ssl offloading
nginx 使用openssl ,性能要優(yōu)于tomcat的ssl解決方案,并且通過前端的nginx作ssl處理,讓tomcat及weblogic專注于業(yè)務(wù)邏輯的處理,會是一個更好的選擇。






作者: Fl_wolf    時間: 2016-04-18 11:18
如何在實(shí)戰(zhàn)中熟練使用Nginx?
首先要對原理和運(yùn)作機(jī)制要有一定的理解,然后就是多使用,多想一些更好更簡便,方便的調(diào)優(yōu)方法。

如何發(fā)揮Nginx的性能?
做好nginx的連接數(shù)等性能監(jiān)控,如果出現(xiàn)訪問緩慢或者使用有問題等情況查看機(jī)器的硬件是否到瓶頸,如果沒到瓶頸在看配置是否出現(xiàn)不合理沒有很好的利用硬件性能。

如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
編寫插件或者模塊就是到另一個階段了,還是那句話,多想多實(shí)踐,不要拘泥于現(xiàn)狀。
作者: yehuafeilang    時間: 2016-04-18 14:29
Nginx 是一個很強(qiáng)大的高性能Web和反向代理服務(wù)器,在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯的替代品,所以學(xué)之,用之吧~
作者: expert1    時間: 2016-04-19 13:29
學(xué)習(xí)學(xué)習(xí)nginx.
作者: fantigcy    時間: 2016-04-19 14:31
不太懂啊,只是簡單的搭建過lnmp環(huán)境,別的就沒有用過了
作者: fantigcy    時間: 2016-04-19 14:32
書,看著挺不錯,頂一下
作者: pingmm    時間: 2016-04-21 17:50
本帖最后由 pingmm 于 2016-04-21 17:52 編輯

回復(fù) 31# Godbach


    REUSEPORT 內(nèi)核就沒驚群了?
fork之后每個子進(jìn)程自己listen同一個端口,
然后加入epoll,連接進(jìn)來之后只會wake一個epoll_wait?
作者: Godbach    時間: 2016-04-21 22:39
回復(fù) 38# pingmm

fork 之后的 listen,創(chuàng)建的是一個新的 listen fd。在內(nèi)核態(tài)也是一個獨(dú)立的 socket 結(jié)構(gòu),因此各進(jìn)程使用的都是獨(dú)立的 fd,彼此之間沒有共享關(guān)系。


   
作者: Godbach    時間: 2016-04-21 22:40
回復(fù) 38# pingmm


然后加入epoll,連接進(jìn)來之后只會wake一個epoll_wait?


是的,因?yàn)楦鱾進(jìn)程都是獨(dú)立的 listen fd,所以只會出發(fā)對應(yīng)進(jìn)程的 epoll。
   
作者: 睡羅    時間: 2016-04-22 00:15
進(jìn)來看看了。
作者: 深入學(xué)習(xí)LUA    時間: 2016-04-22 15:48
請教一下nginx能禁止用戶下載么,怎么配置
作者: crazyhadoop    時間: 2016-04-22 15:51
回復(fù) 42# 深入學(xué)習(xí)LUA


    禁止下載什么?
作者: 深入學(xué)習(xí)LUA    時間: 2016-04-22 15:55
回復(fù) 43# crazyhadoop 讓用戶只能看文件和視頻,禁止下載視頻和pdf文件


   
作者: crazyhadoop    時間: 2016-04-22 16:16
回復(fù) 44# 深入學(xué)習(xí)LUA


    這不是nginx可以阻止的啊,前端都已經(jīng)緩存過來了,就是已經(jīng)下載了。 還是播放器和PDF閱讀器限制吧。
作者: 深入學(xué)習(xí)LUA    時間: 2016-04-22 16:43
回復(fù) 45# crazyhadoop
我想做的是讓nginx阻止這些東西的下載,只能在線看

   
作者: Eddyboy2001    時間: 2016-04-25 15:45
Nginx,公司才剛剛部署上去,還沒來得及了解。
作者: pingmm    時間: 2016-04-26 17:52
Godbach 發(fā)表于 2016-04-21 22:40
回復(fù) 38# pingmm

那內(nèi)核會選擇那個進(jìn)程來wake呢?畢竟都是監(jiān)聽同一個端口。 會不會存在不均衡的情況?
作者: Godbach    時間: 2016-04-26 20:58
回復(fù) 48# pingmm

reuseport 的 patch 已經(jīng)處理好這個問題了,不均衡的話也不會讓集成到 kernel 里。


   
作者: yuanzh78    時間: 2016-04-27 12:10
nginx很強(qiáng)大 ,多worker之間在socket讀寫上有競爭,以及其他資源,為了穩(wěn)定,只好只用一個worker,沒有好辦法,有人有么?
作者: Hongqiyaodao    時間: 2016-04-27 13:21
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: 任大頭    時間: 2016-04-27 16:34
給我講講七層負(fù)載的模塊。。。詳細(xì)的介紹下
作者: 呆若    時間: 2016-04-29 18:37
好書,支持。
作者: sxwszgc    時間: 2016-05-03 09:06

  1、如何在實(shí)戰(zhàn)中熟練使用Nginx?
首先,按照文檔將依賴關(guān)系弄清楚以后,安裝部署并不難,關(guān)鍵點(diǎn)還是nginx.conf文件的了解,熟悉main(全局設(shè)置)、server(主機(jī)設(shè)置)、upstream(負(fù)載均衡服務(wù)器設(shè)置)和 location(URL匹配特定位置的設(shè)置)等模塊的作用,明白各個參數(shù)作用,對于熟練配置nginx很有幫助
  2、如何發(fā)揮Nginx的性能?
nginx是一款輕量級高性能的服務(wù)軟件,針對不同的應(yīng)用場景,對于連接數(shù)、進(jìn)程數(shù)、超時等,可以相應(yīng)的調(diào)整配置
  3、如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
目前主要用的還是負(fù)載均衡功能,沒有進(jìn)行過開發(fā),不過看nginx源碼貌似是C寫的,如果要開發(fā)估計對算法數(shù)據(jù)結(jié)構(gòu)有比較深的造詣,還是基本功不行
作者: pingmm    時間: 2016-05-03 15:21
回復(fù) 49# Godbach


    那太好了,那nginx的 accept_mutex就沒必要了
作者: Godbach    時間: 2016-05-03 15:33
回復(fù) 55# pingmm

但是好像官方的 nginx 沒有 merge 這個 patch 吧。


   
作者: VIP_fuck    時間: 2016-05-03 16:17
nginx的代碼指針比較不爽
作者: Godbach    時間: 2016-05-03 19:41
回復(fù) 57# VIP_fuck
有個指向配置的四級指針,好流弊的樣子。


   
作者: 淡定與灑脫    時間: 2016-05-04 00:34
如何在實(shí)戰(zhàn)中熟練使用Nginx?
//基本的東西:ssl、白名單、日志定制、響應(yīng)分析,url過濾,靈活運(yùn)用各種策略,緩存。。。

如何發(fā)揮Nginx的性能?
//基本的東西:配置好一些基本參數(shù),比如worker process,ssl調(diào)優(yōu)等

如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
//我不是姚偉斌,編了也沒人敢用。
作者: VIP_fuck    時間: 2016-05-04 08:24
回復(fù) 58# Godbach


    準(zhǔn)備開始學(xué)習(xí),,,,使用
作者: xbycn    時間: 2016-05-04 11:48
如何在實(shí)戰(zhàn)中熟練使用Nginx?
1、首先了解Nginx的基本架構(gòu)、原理
2、了解Nginx最擅長的功能和特點(diǎn)(主要他的優(yōu)點(diǎn)):常用功能有反向代理、負(fù)載均衡、目錄保護(hù)、IP訪問限制、防盜鏈、下載限速等
特點(diǎn)有:熱部署、高并發(fā)、響應(yīng)快、內(nèi)存消耗低、易配置、BUG少;
3、想熟練就要折騰,不怕客戶需求刁鉆,有需求、要求,才有動力去發(fā)掘、調(diào)整、提高
如何發(fā)揮Nginx的性能?
1、想在生產(chǎn)中不出問題或少出問題,測試工作是不可避免的,利用壓力測試工具和監(jiān)控程序分析、調(diào)優(yōu)性能,本人都是用免費(fèi)的工具(webbench、tsar等),LoadRunner相對于tsar龐大很多,不過圖形化支持的很好;
2、對操作系統(tǒng)必須有一定了解,Nginx很多參數(shù)也受制于系統(tǒng)參數(shù)的限制,無法發(fā)揮最大性能;
總之要充分發(fā)揮Nginx的性能,不止是單純調(diào)整Nginx的幾個參數(shù)就可以的,需要知識面廣
  如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
這個,我暫時還沒有接觸過
以上純屬個人觀點(diǎn)。
作者: j_cle    時間: 2016-05-05 10:05
也來參加下活動,

  1】如何在實(shí)戰(zhàn)中熟練使用Nginx?
      工作業(yè)務(wù)的關(guān)系,只用到Nginx的反向代理以及負(fù)載均衡等特性,比較典型的是郵件代理和web服務(wù)的反向代理,偶爾也做過一些輕量級的web部署在nginx上,所以自己也是靠看官方文檔以及相關(guān)的書籍來慢慢熟悉的,但是nginx有很多強(qiáng)大的功能,自己也沒有用到,因?yàn)闃I(yè)務(wù)要哪塊的東西,真正做的才是哪方面的東西,這樣會學(xué)習(xí)的比較透徹,主要還是貼合業(yè)務(wù),像優(yōu)化等自己也只是在書中看到過,并未涉及,這陣子有時間會看一些nginx內(nèi)部的源碼,整個代碼分布對從軟件設(shè)計的角度看很好的參考和學(xué)習(xí)材料,結(jié)構(gòu)的安排以及功能模塊的劃分很合理。目前還在慢慢深入研究
  2】如何發(fā)揮Nginx的性能?
      要最求極致的性能,一種是作為代理和輕量級web服務(wù)器在架構(gòu)上做好規(guī)劃,使用LNMP 或LNAMP等架構(gòu)方案,從架構(gòu)方案上保障系統(tǒng)的健壯性;而是需要在集群部署的基礎(chǔ)上,做Nginx的調(diào)優(yōu),包括linux內(nèi)核以及Nginx的配置文件參數(shù)的調(diào)整,需要深入了解Nginx各參數(shù),這些自己也僅僅是寫了解,工作當(dāng)中并未深入涉及
  3】如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
      目前也正在看源碼,主要是其功能模塊的劃分以及數(shù)據(jù)結(jié)構(gòu)的設(shè)計,學(xué)習(xí)下軟件設(shè)計的方法,借鑒下思路,并未涉及對Nginx插件的編寫,后面源代碼理解后可嘗試下,這道題也給了自己想法,謝謝。
作者: guan412188154    時間: 2016-05-08 20:50
單位的主要web用的就是NGINX反向代理,共5臺,采取的是負(fù)載均衡。個人的使用體驗(yàn)如下:1.對靜態(tài)頁面緩存功能與請求的處理能力算是頂級的了。2.故障率極低,而且加上shell腳本,可以達(dá)到故障的自我修復(fù)效果。第3點(diǎn)是我覺得最有價值的地方了。3.抗CC攻擊的效果非常好,對于沒有cdn,沒上云服務(wù)的公司,NGINX可謂首選。一點(diǎn)點(diǎn)個人見解!
作者: cgg2046    時間: 2016-05-09 11:43
學(xué)習(xí)一下 先
作者: xiaomaoshi    時間: 2016-05-09 14:04
抱著學(xué)習(xí)的態(tài)度來的
作者: shenlanyouyu    時間: 2016-05-10 21:25
本帖最后由 shenlanyouyu 于 2016-05-10 21:36 編輯

1. 如何在實(shí)戰(zhàn)中熟練使用Nginx?
     Nginx是一個安全、快速并且靈活的開源Web服務(wù)器,占用系統(tǒng)資源少,并發(fā)能力強(qiáng),穩(wěn)定較高。現(xiàn)在公司的業(yè)務(wù)是構(gòu)建在LNMP架構(gòu)上的,后臺開發(fā)人員為了加快環(huán)境搭建,使用了LNMP一鍵安裝包。因?yàn)镹ginx編譯安裝需要輸入大量的命令,如果是配置生產(chǎn)環(huán)境需要耗費(fèi)大量的時間。
     在實(shí)戰(zhàn)中熟練使用Nginx,需要熟悉Nginx的配置文件,熟練掌握配置的通用語法。多練習(xí)搭建負(fù)載均衡、反向代理,熟能生巧。其次,遇到問題可以通過網(wǎng)絡(luò)來獲取幫助。
     同時可以加入郵件討論組:http://mailman.nginx.org/mailman/listinfo。
     學(xué)習(xí)官方的使用手冊: http://mailman.nginx.org/mailman/listinfo
    配合一些工具,例如wireshark抓取網(wǎng)絡(luò)packet來分析;使用gdb attach到Nginx進(jìn)程來調(diào)試分析;使用日志信息來跟蹤Nginx的運(yùn)行等等,掌握Nginx的運(yùn)行的流程。

2. 如何發(fā)揮Nginx的性能?
一、Nginx的進(jìn)程的模型,是主-從結(jié)構(gòu),一個master進(jìn)程,多個worker進(jìn)程。worker進(jìn)程通常為CPU的數(shù)量。進(jìn)程職責(zé)如下:
     (1) master進(jìn)程是監(jiān)控進(jìn)程,充當(dāng)進(jìn)程組和用戶交互的接口,同時監(jiān)控worker進(jìn)程,如果worker進(jìn)程意外退出,master重新fork一個worker進(jìn)程。
     (2) worker進(jìn)程完成具體的業(yè)務(wù)邏輯,等待客戶端建立連接,接收客戶端的連接請求等等。
     前面有網(wǎng)友說worker進(jìn)程的數(shù)量,配置為CPU數(shù)量*2。我覺得這樣不能提高效率,正確的做法是:
     (1) worker進(jìn)程數(shù)=CPU數(shù),進(jìn)程間切換的代價是最小的。
     (2) 其次設(shè)置worker進(jìn)程的CPU親和性,將worker進(jìn)程綁定到特定的CPU上面,避免進(jìn)程在CPU間調(diào)度帶來的開銷
     采用上面兩個設(shè)定可以最大程度地降低進(jìn)程切換帶來的效率損失和提高CPU的利用率。在一個四核CPU上,worker進(jìn)程的數(shù)量如下:
     openstack@openstack-VirtualBox:/mnt/share/nginx/nginx-1.6.3$ sudo /etc/init.d/apache2 stop
     * Stopping web server apache2                                                                             *
     openstack@openstack-VirtualBox:/mnt/share/nginx/nginx-1.6.3$ sudo /etc/init.d/nginx start
     openstack@openstack-VirtualBox:/mnt/share/nginx/nginx-1.6.3$ ps -aux |grep nginx
     root     15816  0.0  0.3  85892  2820 ?        Ss   21:10   0:00 nginx: master process /usr/sbin/nginx
     www-data 15817  0.0  0.3  86232  3412 ?        S    21:10   0:00 nginx: worker process
     www-data 15818  0.0  0.3  86232  3412 ?        S    21:10   0:00 nginx: worker process
     www-data 15819  0.0  0.3  86232  3412 ?        S    21:10   0:00 nginx: worker process
     www-data 15820  0.0  0.3  86232  3412 ?        S    21:10   0:00 nginx: worker process
     opensta+ 15822  0.0  0.2  15944  2392 pts/24   S+   21:10   0:00 grep --color=auto nginx

二、Nginx是事件驅(qū)動的Web服務(wù)器,支持select/poll/epoll等I/O多路復(fù)用函數(shù)的實(shí)現(xiàn)。使用epoll不會設(shè)置文件描述符的增加而導(dǎo)致效率的下降。因?yàn)閟elect和poll采用遍歷掃描來判斷描述符是否有事件發(fā)生。監(jiān)控的文件描述符增加,系統(tǒng)效率就會急劇下降。因此配置使用epoll會提高系統(tǒng)的性能。

3. 如何在理解Nginx源碼的基礎(chǔ)上,通過編寫Nginx插件來提高自己的編程能力?
     研究過一部分Nginx的源代碼,全部用C語言寫的,代碼質(zhì)量非常高。編寫Nginx插件,當(dāng)然需要掌握C語言,C++語言也是可以開發(fā)Nginx的,據(jù)我所知lua也可以編寫Nginx插件。
理解Nginx源碼最好的方法就是先用,在使用過程中加深理解。其次選一本好的參考書,輔助學(xué)習(xí),好的書籍能夠夠指導(dǎo)我們學(xué)習(xí),達(dá)到事半功倍的效果。
     (1) 首先下載一份Nginx的源碼,搭建編譯環(huán)境,編譯安裝。這種方式難度會大一些,需要在源代碼目錄執(zhí)行./configure,然后make & make install,其次,要處理很多編譯依賴庫安裝的問題,例如pcre。例如下圖:
     checking for getaddrinfo() ... found
     checking for PCRE library ... not found
     checking for PCRE library in /usr/local/ ... not found
     checking for PCRE library in /usr/include/pcre/ ... not found
     checking for PCRE library in /usr/pkg/ ... not found
     checking for PCRE library in /opt/local/ ... not found

    ./configure: error: the HTTP rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.

     也可以采用$sudo apt-get install nginx方式來安裝。
     (2) 使用Nginx,配置Nginx,熟悉并逐漸掌握Nginx的配置和使用,主要理解Nginx的配置語法。
     Nginx搭建一個反向代理服務(wù)器,將用戶的請求分發(fā)到不同的后端服務(wù)器來處理,由這些服務(wù)器完成具體的業(yè)務(wù)邏輯,通過分布式計算能夠大大減少業(yè)務(wù)處理時間。
     (3) 配合一些工具,例如wireshark抓取網(wǎng)絡(luò)packet來分析;使用gdb attach到Nginx進(jìn)程來調(diào)試分析;使用日志信息來跟蹤Nginx的運(yùn)行等等。
     (4) 在使用過程中,理解,通過工具來了解Nginx的運(yùn)行流程。結(jié)合源代碼學(xué)習(xí),掌握Nginx的模塊機(jī)制。
     (5) 編寫負(fù)載均衡策略,Nginx中提供了加權(quán)輪詢、IP哈希等策略,通過參考他們的實(shí)現(xiàn),編寫適合自身業(yè)務(wù)需求的負(fù)載均衡策略,添加到Nginx中。

作者: nmgchjp    時間: 2016-05-12 22:19
回復(fù) 1# crazyhadoop


   
作者: nmgchjp    時間: 2016-05-12 22:20
回復(fù) 2# cjfeii


    download
作者: cjfeii    時間: 2016-05-13 11:49


回復(fù) 68# nmgchjp


   
作者: KingStar_liu    時間: 2016-06-03 16:20
好想要一本第二版學(xué)習(xí)一下




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2