NginxにLuaモジュールを追加する方法

NginxにLuaモジュールを追加する方法

luaをインストールする

http://luajit.org/download/LuaJIT-2.0.5.tar.gz をダウンロードしてください 
tar -zxvf LuaJIT-2.0.5.tar.gz
LuaJIT-2.0.5 をCDに追加
make && make install PREFIX=/usr/local/LuaJIT

etc/profile が追加されました

# ルア
LUAJIT_LIB=/usr/local/LuaJIT/lib をエクスポートします。 
LUAJIT_INC=/usr/local/LuaJIT/include/luajit-2.0 をエクスポートします。

ソース etc/profile

ngx_devel_kitモジュールをダウンロードする

https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz をダウンロードしてください

NDK(nginx開発キット)モジュールは、nginxサーバーのコア機能を拡張するモジュールです。これをベースにサードパーティのモジュール開発を迅速に実装できます。 NDK は、いくつかの基本的なタスクを処理するための関数とマクロを提供し、サードパーティ モジュールの開発に必要なコードの量を削減します。

lua-nginx-module をダウンロード

https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz を取得します。

lua-nginx-module モジュールは lua を nginx で直接実行できるようにします

オリジナル編集を見る

nginx -V

のように:
設定引数: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_sub_module --with-http_v2_module

nginx の元のディレクトリを入力します:

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_sub_module --with-http_v2_module --add-module=/root/lua-nginx-module-0.10.9rc7/ --add-module=/root/ngx_devel_kit-0.3.0

make だけを実行し、make install は実行しないでください。

コンパイル エラーは、Lua 環境変数が正しくないことが原因であるはずです。

nginx -V コマンド エラー。/nginx: 共有ライブラリのロード中にエラーが発生しました: libluajit-5.1.so.2: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません

解決する:
echo "/usr/local/LuaJIT/lib" >> /etc/ld.so.conf

ldconfig

成功したら、nginx -V でチェックしてエラーがないことを確認します。

元のnginxをnginx_oldとしてバックアップします

cp objs/nginx を元の nginx にコピーして上書きします。

ビルドディレクトリで実行

アップグレードする

Nginx lua モジュールを追加

テスト:

サーバ{
 ...
 場所 /lua {
  デフォルトタイプ 'text/html';
  コンテンツbylua
    ngx.say("こんにちは、lua!")
  ';
 }
 ...
}

ブラウザが開きます:

http://blog.13sai.com/lua

こんにちは、ルアが見えますよ!

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux で nginx 用の waf モジュールをインストールする
  • Lua モジュールを使用して WAF を実装する Nginx の原理の分析

<<:  JavaScript 関数をよりエレガントにする方法

>>:  Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明

推薦する

Dockerfile ビルド中に発生する「/bin/sh: pip: コマンドが見つかりません」という問題の解決方法

記述した Dockerfile の内容は次のとおりです。 Python:3.6.8 から pip i...

503 サービス利用不可エラーの解決方法の説明

1. Webページを開くと503サービス利用不可が表示されますが、更新すると正常にアクセスできます。...

Linuxの同時実行は簡単です。このようにするだけです

並行処理関数 i の `grep server /etc/hosts | awk '{pri...

VMWare 仮想マシン 15.X LAN ネットワーク構成チュートリアル図

最近、分散型およびビッグデータ技術について学ぶために、いくつかの仮想マシンに取り組んでいます。まず、...

MySQL マルチバージョン同時実行制御メカニズム (MVCC) ソースコードの詳細な説明

目次1. はじめに2. MVCC (マルチバージョン同時実行制御メカニズム) 2.1 繰り返し読み取...

MySQL 8.0.12 のインストールと使用方法のチュートリアル

MySQL 8.0.12のインストールと使用のチュートリアルを録画しました。ウィンドウズまず、公式ウ...

複数の古いプレーヤーの埋め込みコード

ウェブページに表示されるプレーヤーは、WMP/RealPlayer/Flash Player に過ぎ...

CSS フロントエンドページレンダリング最適化属性 will-change の具体的な使用法

序文スクロールやサイズ変更などのスクロール イベントがトリガーされると、トリガーの頻度が非常に高くな...

MySQLのさまざまなロックの概念的理解

楽観的ロック楽観的ロックは、主にデータ バージョン記録メカニズムに基づいて実装され、通常はデータベー...

トピックページデザインの 5 つの基本スキル (Alibaba UED Shanmu)

このトピックは、2012 年後半の社内共有です。まだ記事にはなっていませんが、春節が近づいているので...

ブラウザのキャッシュを防ぐために、js または css の後に ?v= バージョン番号を追加します。

コードをコピーコードは次のとおりです。 <span style="font-size...

ウェブ上の模倣と盗作に関する議論

2005年に業界に入ってから数か月後、労働者の日休みの期間中、1か月以上毎日12時まで残業をしました...

JavaScript offsetParent のケーススタディ

1. offsetParentの定義: offsetParentは子要素に最も近い位置に配置された親...

フロントエンドでよく使われるjs関数メソッド

目次1. メール2. 携帯電話番号3. 電話番号4. URLアドレスですか? 5. 文字列ですか? ...