<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                Nginx原理及模塊開發初步 #插件化與模塊化 插件與模塊化實例: 正如緩存是速度的秘密,插件與模塊化一直是項目成長的引擎 功能強大的秘密 ? 實體中的可換頭螺絲刀 ? USB接口 ? 函數 ?類 ? PHP 模塊 ? Eclipse 插件 ? Nginx 模塊 ##插件與模塊化好處: 1. 模塊化使得分工更加清晰,而插件化使得功能的無限擴展成 為可能,而且不影響主體工程 2. 如果說 PHP 模塊開發更多是為了效率,而Web服務器的模塊 開發,更多是為了功能擴展 #Apache 模塊開發 ###概念 1. apache模塊擴展方式 靜態編譯--with-ssl 動態模塊.so 2. 動態模塊DSO Dynamic SharedObjects(動態共享目標) 3. apache的apxs(Apache eXtenSion) 與php的--with-apxs2、phpize ###條件 1. 從源碼安裝 Apache 2. 安裝 apr (Apache Portable Runtime)庫和 apr-util 庫 3. /usr/local/apache2/bin/apxs(APache eXtenSion), 編譯和安 裝擴展模塊,用于編譯一個或多個源程序或目標代碼文件為動態 共享對象,使之可以用由 mod_so 提供的LoadModule 指令在 運行時加載到 Apache 服務器中 ###模塊開發 1. 進入 httpd-2.4.12/modules/ 2. /usr/local/apache2/bin/apxs –g –n ucai 3. 配置調整 ![](https://box.kancloud.cn/2016-05-11_5733453fca990.png) 4. http://101.251.196.91:8080/ucai ###模塊接口 ![](https://box.kancloud.cn/2016-05-11_57334540015db.png) 模塊接口 1. ucai_register_hooks 在啟動時調用,相當于 PHP模塊中的 MINIT 函數 2. 可以注冊多個 Hook 函數,在不同階段調用 3. 返回值 OK 結束,DECLINED 表示繼續進入下面的階段 4. 詳細可調用接口 apache-example.c #Nginx 模塊開發 ![](https://box.kancloud.cn/2016-05-11_573345403aaa4.png) ![](https://box.kancloud.cn/2016-05-11_57334540638ad.png) ##Nginx配置是靈魂,core模塊簡單高效 main(全局設置) events(事件配置) upstream(上游服務器設置) http(通用請求處理) server(主機設置) location(URL匹配特定位置后的設置) ![](https://box.kancloud.cn/2016-05-11_57334540928b5.png) ![](https://box.kancloud.cn/2016-05-11_573345771d92f.png) ![](https://box.kancloud.cn/2016-05-11_57334577815ab.png) ? Nginx模塊文件組成 config 描述名稱和源文件位置,還可以指定依賴庫 c 源文件,可以有多個,config里描述 ? Nginx模塊加載過程 ./configure --add-module=.... 讀取config生成Makefile c文件遵循nginx插件規范接口 nginx解析conf文件,core模塊分配location到模塊指定接口處理 ? ningx -V 查詢編譯參數 Nginx模塊組成 1. 模塊定義,總流程 ngx_module_t (必須) 2. 模塊上下文,Hook注入點ngx_http_module_t(http模塊) 3. 模塊指令ngx_command_t(loc模塊) 4. 參數存儲Struct命名ngx_http_[module-name]_[main|srv|loc]_conf_t 5. 模塊按類型特有流程裝載,例如Handler a)獲取配置 ngx_http_get_module_loc_conf(loc模塊) b)生成響應,設置ngx_http_request_t c)發送響應頭 ngx_http_send_header d)發送響應體 ngx_http_output_filter ##Nginx模塊示例 1. headinfo main模塊,最少代碼 增加頭部信息輸出 2. ucai_echo location模塊 匹配location輸出配置參數 3. ucai_auth main模塊 讀取cookie,匹配redis用戶,輸出驗證信息 yum install redis hiredis hiredis-devel 4. stub_status 自帶location模塊 內部統計信息 ##Nginx模塊分類 objs/ngx_modules.c 全局core模塊 event模塊 正則模塊 http模塊 http handler模塊 第三方handler模塊 http filter模塊 第三方filter模塊 #LNMP核心模塊擴展總結 1、apache、nginx apxs LoadModule、--add-module 2、php module extension=memcache.so 3、Mysql插件 install plugin 每一層都可以擴展 形成了強大的LNMP組合
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看