openrestyで開発nginxのプラグイン

OpenResty利点

まず、私たちはnginxのプラス、多くのサードパーティのモジュールの中核であるOpenRestyを、使用することを選択し、最大の明るいスポットは、使用するWebサーバーとしてnginxのを作り、Luaは統合開発環境のデフォルトです。

イベント駆動型モデルと、非ブロッキングIOによるnginxのは、高性能なWebアプリケーションを実現することができます。

そしてOpenRestyはnginxのWebアプリケーションの開発者は、より便利で簡単なようなので、上のMySQL、Redisの、Memcachedの、およびなどのコンポーネントの数を提供します。現在、Jingdongは、このようなので、その上、このようなネットワーク淘宝網などの他の企業は、nginxの+ Luaのアーキテクチャを使用して、リアルタイムの価格スパイク、動的なサービス、単一の製品ページ、リストページなど。

 

IV。nginxのとLUAの紹介

1. Nginxは:

の利点(1)nginxの

  • 少ないメモリとリソースを取るよりも軽量で同じ始まるApacheのWebサービス 

  • 同時アンチnginxのapacheの処理要求が非同期であり、非ブロック高同時閉塞性nginxのは、高性能、低リソース消費の下で維持します 

  • 高度にモジュール設計は、モジュールを記述することは比較的簡単です 

  • コミュニティ活動家は、ああすぐに高性能モジュールの様々な生産しました

(2)nginxのはなぜ高い性能を、より少ないメモリを取ります

我々はすべて、高性能のnginxのを知って、そしてその高性能アーキテクチャをnginxのよう不可分です。ここでは、簡単なラフnginxのアーキテクチャについて説明します。

  • まず、nginxのは、それが良いものを、プロセスモデルの多くを使用していますか?まず、各ワーカー・プロセスのために、そのオーバーヘッドロックの必要性を排除し、別のプロセス、ノーロックは、プログラミングで同じ時間を見て持ってきて、問題は非常に簡単になります。第二に、別のプロセスの使用は、プロセスが終了した後、別のプロセスがまだ働いていた、サービスが中断されることはありません、お互いに影響を与えません作るプロセスはすぐに新しいワーカープロセスを開始習得することができます。もちろん、異常終了ワーカープロセスが予期せず終了し、すべての要求は、現在の作業員の故障につながるだろう、確かにプログラムのバグですが、そうリスクを軽減、すべての要求には影響しません。

  • nginxのは、非同期それが何であるか、非ブロッキング、要求に対処するために、非同期の非ブロッキング方法は何ですか?実際の状況は、コールウェイティングなどのスレッドioは代わりにここでのブロッキング、発生しますが、実行に行くそして、そのようなIOなど他のもの、準備に対処するとき、私はここでは具体的に説明し、誰もいないということですA。

2.連絡先:

(1)Luaは小さなスクリプト言語です。著者はブラジル人です。言語は、アプリケーションのための柔軟な拡張やカスタマイズ機能を提供する、組み込みアプリケーション向けに設計されて

(2)Luaは特徴:

  • Luaのスクリプトは簡単にC / C ++コードを呼び出すことができる関数Cを呼び出して変えることができます/アプリケーション内のLuaを作るC ++は、広く使用することができます。拡張スクリプトとしてだけでなく、理解し、維持する代わりに、XML、INIファイル形式、および容易なの、通常のコンフィギュレーション・ファイルとして使用することができます。

  • 標準のCコードからLuaのによって書かれたが、ほとんどすべての、シンプルで美しいです実行し、すべてのオペレーティングシステムおよびプラットフォームでコンパイルすることができます。完全なLuaのインタプリタが、200Kは、現在のすべてのスクリプトエンジンでは、Luaは最速のスピードです。これはすべてのLuaスクリプトが最良の選択として埋め込まれて決定されます。

 

V. OpenRestyインストール

私のドアの上に、より良いあなたが理解できるようにするために、導入の動作原理と同様に、Nginxは、Luaの利点を説明するために簡単な紹介をOpenRestyします。それは何ができるか終わりにある、誰もがこれを使用することの利点を教えてください、私は簡単にOpenRestyのインストールを導入した上記の利点に加えて、誰もが知っているように単純な電流制限、の例を設定します。

OpenRestyインストール:

(1)必要なプラグインをインストールする必要性について

1
yum  install  readline-devel pcre-devel openssl-devel

(2)ダウンロードしngx_openresty-1.7.7.2.tar.gzを抽出 

1
wget http: //openresty .org /download/ngx_openresty-1 .7.7.2. tar .gz

(3)インストールLuaJIT

1
2
3
cd  bundle /LuaJIT-2 .1-20150120/
make  clean &&  make  &&  make  install
ln  -sf luajit-2.1.0-alpha  /usr/local/bin/luajit

(4)キャッシュのnginxをきれいにするために使用され、ngx_cache_purgeモジュールをダウンロード

1
wget https: //github .com /FRiCKLE/ngx_cache_purge/archive/2 .3. tar .gz

健康USTREAMをチェックするために使用されている(5)nginx_upstream_check_moduleダウンロード・モジュール、

1
wget https: //github .com /yaoweibin/nginx_upstream_check_module/archive/v0 .3.0. tar .gz

(6)ngx_openresty搭載

1
2
3
4
5
6
7
8
9
cd  /usr/servers/ngx_openresty-1 .7.7.2
. /configure 
--prefix= /usr/servers 
--with-http_realip_module  
--with-pcre  
--with-luajit 
--add-module=. /bundle/ngx_cache_purge-2 .3/ 
--add-module=. /bundle/nginx_upstream_check_module-0 .3.0/ -j2
make  &&  make  install

(7)の下には/ usr / serversディレクトリに、次のような余分なディレクトリを検索し、インストールが成功しています

(8)スタートnginxの:は/ usr /サーバ/ nginxの/ sbinに/ nginxの(実際には、私たちすることができますより良いシステム設定、環境変数、コンフィギュレーション・データを直接のnginxの良いコマンドの後)

 

VI。構造の簡単な例のアンチブラシ(ホワイトリスト)

1.まず、example.luaより良いと呼ばれるの/ usr /サーバ/ nginxの/ confに/ディレクトリに私たち自身の簡単なLUAファイルを作成することができます。

次のコマンドを入力し、私たちはあるexample.confファイルを作成することができ、あるいは我々はnginx.confあるexample.confかは、mkdirあるexample.confをcpはでき

2.次に、私たちはこのスタートアップコンフィギュレーションファイルを編集する必要がありnginx.conf

[OK]を、私たちは編集インターフェースに入り、その後、私たちは、httpで次のコマンドnginx.confの体を追加し、私たちの中にあるexample.confファイルに導入する必要がありますあるexample.confが含まれます

次のようにNginx.conf具体的な内容は以下のとおりです。

あなたは赤いボックスを見ることができ、独自のプロジェクトドキュメントやLuaのモジュールを導入するの導入です。

3.次に、我々はロジックがあるexample.confファイルに実装されて書くことができます

4.私たちは、これはコンテンツLUAスクリプトステージに埋め込ま見ることができる、内部あるexample.confロケーションサーバ複数の、それを参照して、埋め込み位置content_by_lua_fileの/usr/example/lua/redis_black_limit.luaできそれは私たちが行くと対応するコードを参照してください応答内容は、対処する方法ですました。

これは私が内部から複数のIP、Redisの値を午前、我々が見ることができる抗ブラシデモ、である、そして抗ブラシ機能を実行するには、ip要求を照合することによって、加えて、ステートメントがあります私たちは私たちのクラスローダ、Class.forNameのに相当する、必要なので、Luaのモジュールの負荷に来るんことに気づきました。

5. 除此之外,还简单的做了一个设置黑名单和取消黑名单的功能,用来充当我们以后的管理中心,具体逻辑写在set_black.lua和cancel.lua中,然后在lua.conf中配置好url,具体如下图所示:

在lua.conf中server体里加入一下代码:

接下来我们需要写set_black.lua和cancel.lua文件,文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
v   set_black.lua:
local  redis =require  "resty.redis"
local  cache =redis.new()
cache:set_timeout(6000)
local  ok,err=cache.connect(cache, '192.168.150.61' ,6379)
if  not ok  then
         ngx.say( "failed to connect:" ,err)
         return
end
local  ip = ngx.var.remote_addr
cache: set ( "user:" ..ip.. ":block" ,1)
ngx.say( "user:" ..ip.. ":block" .. "设置黑名单成功" )
1
2
3
4
5
6
7
8
9
10
11
12
v   cancel_black.lua:
local  redis =require  "resty.redis"
local  cache =redis.new()
cache:set_timeout(6000)
local  ok,err=cache.connect(cache, '192.168.150.61' ,6379)
if  not ok  then
         ngx.say( "failed to connect:" ,err)
         return
end
local  ip = ngx.var.remote_addr
cache:expire( "user:" ..ip.. ":block" ,0)
ngx.say( "user:" ..ip.. ":block" .. "移除黑名单" )

 

7. 效果

做好了以上配置,我们可以开始先设置好黑名单,然后访问请求,返回的结果是被黑名单了,然后再取消黑名单,再访问请求,显示访问成功。

其他例子:https://www.cnblogs.com/digdeep/p/4859575.html

おすすめ

転載: www.cnblogs.com/slqt/p/10949256.html