• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            concentrate on c/c++ related technology

            plan,refactor,daily-build, self-discipline,

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              37 Posts :: 1 Stories :: 12 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(9)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

             

            Nginx開(kāi)發(fā)第三方模塊實(shí)例

            Ø 序言

            Nginx是一個(gè)極具擴(kuò)展性的服務(wù)器,這顯著體現(xiàn)在對(duì)第三方模塊的支持,開(kāi)發(fā)者能夠?qū)⒆约洪_(kāi)發(fā)的模塊,按照nginx既有的規(guī)則,完美地融合進(jìn)http框架中,以實(shí)現(xiàn)開(kāi)發(fā)者定制功能的作用。

            這篇文章主要用于結(jié)合如何開(kāi)發(fā)一個(gè)簡(jiǎn)單的第三方模塊,目標(biāo)人群為想了解nginx開(kāi)發(fā)第三方模塊的同學(xué),文章內(nèi)容主要包括三個(gè)部分,如何將HTTP模塊嵌入nginx和如何開(kāi)發(fā)第三方模塊以及一個(gè)例子。

            Ø 如何將HTTP模塊嵌入nginx

            Nginx目前來(lái)說(shuō)提供了二種方式,config文件+configure 腳本,手動(dòng)方式,后面手動(dòng)方式是更加復(fù)雜的,且容易出錯(cuò),在常規(guī)的nginx開(kāi)發(fā)中,基本上都是用config文件+configure腳本方式比較多。接下來(lái)分別介紹這兩種方式。

             

            1)      Config文件+configure腳本

            Config文件

            這個(gè)是指提供config文件,并且在文件里面給出三個(gè)配置項(xiàng),就可以達(dá)到效果。這三個(gè)配置項(xiàng)是指:

            A.      Ngx_addon_name就是自己要開(kāi)發(fā)的這個(gè)模塊名字。

            B.        Nginx模塊名:這有點(diǎn)像設(shè)置環(huán)境變量啥的,首先要知道自己開(kāi)發(fā)啥模塊,nginx對(duì)應(yīng)的模塊有,$HTTP_MODULES(常規(guī)的http模塊), $HTTP_FILTER_MODULES(HTTP過(guò)濾模塊)$HTTP_HEAD_FILTER_MODULES(HTTP 頭部過(guò)濾模塊) $CORE_MODULES(nginx的核心模塊)$EVENT_MODULES(nginx的事件模塊)等,然后在后面添加你所要添加的模塊名字,以空格隔開(kāi),比如這次我們開(kāi)發(fā)添加的模塊:

            HTTP_MODULES = “$HTTP_MODULES ngx_http_helloworld_module”

            C.        NGX_ADDON_SRCS這個(gè)顧名思義,就是指定新添加文件的路徑,不過(guò)這個(gè)都是相對(duì)路徑,因?yàn)樵?/span>configure的時(shí)候就指定了上層路徑,比如--add-modules=PATH

            比如我們這次開(kāi)發(fā)要添加的源文件:

            NGX_ADDON_SRCS = “$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_helloworld_module.c”

            Configure腳本

            這里需要用- -add-module=PATH將第三方模塊的路徑加入,

            比如configure - -add-module=~/ngx_3rd_modules/

            那我們能分析下這背后做了什么呢?我們從下面兩個(gè)部分來(lái)展開(kāi)說(shuō)明

            a)      Auto/modules

            這個(gè)主要是說(shuō)明將定制的第三方模塊添加到生成的ngx_modules.c里面。

            a)         指定模塊下面的配置文件.

            b)         生成模塊信息

            一、生成模塊數(shù)組

            根據(jù)需要開(kāi)啟的模塊加載對(duì)應(yīng)的模塊,下面是開(kāi)啟http模塊后的所需要的模塊
             

            二、生成ngx_modules.c文件

             

            b)      Auto/make

            顯而易見(jiàn),這個(gè)就是負(fù)責(zé)編譯相關(guān)的模塊。

            1)         生成第三方源碼

            2)         生成鏈接代碼,并將目標(biāo)文件,庫(kù)文件鏈接成二進(jìn)制程序


            2)      手動(dòng)方式

            分兩步來(lái)做,第一,修改obj/ngx_modules.c, 在里面增加對(duì)應(yīng)的第三方模塊,第二,修改obj/Makefile,在里面增加第三方模塊的編譯,這種直接修改的方法不太可取,易出錯(cuò),一般都是用上面的第二種方法。

            Ø 開(kāi)發(fā)第三方模塊注意事項(xiàng)

            首先,要確定針對(duì)那個(gè)模塊進(jìn)行開(kāi)發(fā),nginx的模塊是有順序性的,比如: HTTP_MODULES = “$HTTP_MODULES ngx_http_helloworld_module”

            其次,因?yàn)?/span>nginx是異步非阻塞的,在編制代碼時(shí),一定要注意不能阻塞nginx進(jìn)程.

            Ø 示例

            見(jiàn)附件/Files/jolleydtan/test.zip

             

             參考:

            深入理解nginx. 

            posted on 2016-05-10 08:25 jolley 閱讀(1857) 評(píng)論(2)  編輯 收藏 引用 所屬分類: nginx

            Feedback

            # re: nginx開(kāi)發(fā)第一個(gè)helloworld. 2016-05-19 15:16 dzct
            有什么意義?什么使用場(chǎng)景與用途?  回復(fù)  更多評(píng)論
              

            # re: nginx開(kāi)發(fā)第一個(gè)helloworld. 2016-05-20 08:12 jolley
            @dzct
            首先,你要明白nginx用來(lái)做啥的?以及為啥要用nginx而不是apache? 這個(gè)具體原因你自個(gè)兒?jiǎn)柖饶锘蛘吖雀绾昧恕?br>其次,使用場(chǎng)景的話,舉個(gè)例子,在游戲上面,nginx因?yàn)橹С謙cp負(fù)載均衡,所以會(huì)比用來(lái)做前置服務(wù)器,nginx負(fù)載策略有很多種(http://nginx.org/en/docs/http/load_balancing.html),
            如果你想擴(kuò)展基于nginx負(fù)載均衡的策略,那么你可能就要定制HTTP_MODULES模塊作為第三方模塊融入到http框架里面,并且在nginx.conf里面進(jìn)行擴(kuò)展使用。  回復(fù)  更多評(píng)論
              

            久久强奷乱码老熟女网站| 久久午夜电影网| 亚洲精品tv久久久久久久久久| 久久天天躁狠狠躁夜夜2020| 亚州日韩精品专区久久久| 久久永久免费人妻精品下载| 久久超乳爆乳中文字幕| 国产精品成人99久久久久| 久久亚洲精品成人无码网站| 国产精品久久久久久久久鸭| 久久中文精品无码中文字幕| 久久精品国产第一区二区三区| 久久er国产精品免费观看8| 热99RE久久精品这里都是精品免费| 国产成人久久精品一区二区三区| 久久精品国产色蜜蜜麻豆| 午夜天堂精品久久久久| 亚洲?V乱码久久精品蜜桃| 久久亚洲精品视频| 中文字幕乱码人妻无码久久| 久久九九有精品国产23百花影院| 久久99精品久久久大学生| 久久久无码精品亚洲日韩软件| 成人免费网站久久久| 亚洲中文久久精品无码ww16| 久久婷婷色综合一区二区| 久久久久夜夜夜精品国产| 精品久久久久久中文字幕人妻最新| 欧美与黑人午夜性猛交久久久| 久久精品国产免费| 久久国产色AV免费看| 久久精品国产亚洲av麻豆图片| 久久久久国产精品麻豆AR影院| 久久线看观看精品香蕉国产| 91久久精品91久久性色| 精品乱码久久久久久久| 久久婷婷激情综合色综合俺也去| 亚洲精品乱码久久久久久久久久久久| 中文字幕久久精品| 久久久久亚洲av成人网人人软件| 久久久久久精品成人免费图片|