Redis と組み合わせて使用​​される Nginx 埋め込み lua スクリプト

WBOY
リリース: 2016-08-08 09:23:16
オリジナル
1197 人が閲覧しました

0x00 Nginx 埋め込み Lua スクリプトには次の機能があります:

  • 20,000 の同時接続

  • Lua スクリプトは Nignx 11 レベルのさまざまなレベルで役割を果たし、Ngnix の機能を拡張できます

  • Lua は非常に高速です ( 登録手順)

0x01 アプリケーションシナリオ

  • Webサーバー側でのリクエストフィルタリング処理(WAF、Anti CCなど)

0x02 簡単な設定プロセス

  1. テスト環境 Ubuntu Server 14.04。 2 LTS

  2. ダウンロードする必要があるいくつかのモジュール (インストール順序とエクスポート パスの問題に注意してください)

  • Nginx 1.7.4

  • LuaJIT-2.0.4 (ジャストイン) -タイムコンパイラ Lua 用)

  • ngx_devel_kit( Nginx 開発 Kit)

  • echo-nginx-module( 詳細 Nginx 設定ファイルにシェル スタイルの機能を追加)

  • lua-nginx-module(Embed Lua のパワーを Nginx に組み込む)

0x03 luaJIT の lib と inc が環境変数に設定されていないため、考えられる問題、lua.h などが見つかりません

次のように設定する必要があります (実際のローカルパス) :

export LUAJIT_LIB=/usr/lib/lua

export LUAJIT_INC=/usr/local/include/luajit-2.0

cp /usr/local/include/luajit-/* / usr/local/ include/


サービスが開始できない場合は、tail /var/log/syslog をチェックしてエラーを確認できます

nginx が開始できない場合は、tail /var/cache/nginx/error を確認できます.log

If nginx bin ファイルが生成されている場合は、nginx -V を使用して、設定ファイルが正しいかどうかを確認できます。 get install libssl-dev

ps: 特に、最新バージョンの Nginx は上記のモジュール インターフェイスをサポートしていない可能性があるので注意してください。 I Nginx 1.7.4 のインストール手順です。 0x02 にはインストール手順があるため、ここでは詳細には説明しません

0x04 インストール後


nginx.conf ファイル (デフォルトのパス /etc/nginx/nginx.conf) を変更します:

lua コードを追加します

nginx 設定をリロード

sudo /etc/nginx/sbin/nginx -s reload

効果 :


2. lua ファイルを追加します:

lua_package_ を 2 つ追加しますパス、lua_code_cache ( lua キャッシュを保持してデバッグを容易にするため、実際のプロジェクトで開く必要があります)


lua ファイル全体のディレクトリ (lua フォルダー内のファイルは次の New であることに注意してください):
  1. /etc/ nginx/lua/hello.lua

/etc/nginx/lua/hello_redis.lua

/etc/nginx/lua/redis.lua

nginx.conf ファイルの追加:


hello.lua ファイルの内容:

ngx.header.content_type = "text/plain";

ngx.say("say hello from hello.lua");

すべて追加されたロケーション コード:



次に、nginx をリロードして効果を確認します。

3. redis を使用します (3 番目に新しく追加された redis):



前提条件は、マシン上に既に redis-server が存在し、Ubuntu へのインストールは sudo apt-get install です。 redisサーバー


hello_redis.lua 内容:


ローカル redis = require "redis"


ローカル キャッシュ = redis.new()


ローカルOK、err =cache.connect(キャッシュ, '127.0.0.1', '6379')


cache:set_timeout(60000)


問題ない場合は

ngx.say("接続に失敗しました:「、エラー)

return

end


res, err =cache:set("hello", "nginx_inline_luaのredis")

問題がなければ

ngx.say("failed to set hello: "、えー)

return

end


ngx.say("set result: ", res)


ローカル res, err =cache:get("hello")

res でない場合

ngx.say (「hello の取得に失敗しました: "、エラー)

return

end


if res == ngx.null then

ngx.say("hello not found.")

戻る

終了


ngx.say("hello: ", res)

ローカル OK、err =cache:close()


OK でない場合は

ngx.say(" 閉じることができませんでした: "、えー)

return

end


效果:


0x05 现在止、简单的一在Nginx Lua と Redis を操作するプロセスは完了しましたが、構成時には非常に多くの小さな問題が発生する可能性があります。

0xFF 追加资料:

http://wiki.nginx.org/HttpLuaModule

http://openresty.org/ (Nginx内で最後に完了)プラグインの中国語)

http://tengine.taabao.org/

转下请注明出处(个人论坛):http://www.byteway.net/thread-index-fid-4-tid-316 .htm


以上は、Nginx 内部の PHP スクリプトを介して、Redis の使用を統合し、側面の内容を含んでいます。PHP 教則に関心のある友人の助けになることを望みます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート