nginx チュートリアル

Aug 08, 2016 am 09:23 AM
lua nginx quot shell

Nginx and Lua

Fire Cloud Evil Godからの引用: 世界の武道において、壊れないものはありません、スピードだけが壊れません! Nginx の専門は速度であり、Lua の専門は速度です。この 2 つの組み合わせには、間違いなく速度の点で遺伝的な利点があります。

OpenResty は、Nginx と Lua を最初に組み合わせたもので、Lua を Nginx に組み込む ngx_lua モジュールがあり、Tengine にも ngx_lua モジュールが含まれていました。 2 つの違いについては、OpenResty は Nginx のバンドルですが、Tengine は Nginx のフォークです。 OpenRestyとTengineは両方とも中国人によって作成されたプロジェクトであることは言及する価値があります。前者は主にChun GeとXiaozheによって開発され、後者は主に淘宝によって管理されています。

OpenResty と Tengine の長所と短所については、各自で判断してください。以下の情報が参考になります。 Lua で接着された Nginx エコシステム

    淘宝網の Nginx アプリケーション、カスタマイズ、開発の実践
  • Tech-Club での「Lua で接着された Nginx 生態環境」に関する Chun 兄弟の講演の記録を読むことをお勧めします。情報があります。
インストール

には、最新バージョンの Nginx、LuaJIT、ngx_devel_kit、ngx_lua およびその他のインストール ファイルが必要です。

Lua または LuaJIT をインストールすることも可能ですが、効率性の観点から LuaJIT をインストールすることをお勧めします。

shell> wget http://luajit.org/download/LuaJIT-.tar.gz shell> tar zxvf LuaJIT-.tar.gz shell> cd LuaJIT- shell> make shell> make install

デフォルトパスにインストールされているため、LuaJITに対応するlibやincludeは全て/usr/localディレクトリにあります。

shell> export LUAJIT_LIB=/usr/local/lib shell> export LUAJIT_INC=/usr/local/include/luajit-

これで、Nginx をコンパイルできます:

shell> wget http://nginx.org/download/nginx-.tar.gz shell> tar zxvf nginx-.tar.gz shell> cd nginx- shell> ./configure --add-module=/path/to/ngx_lua \ --add-module=/path/to/ngx_devel_kit shell> make shell> make install

Nginx を起動して確認してください。運が悪いと、次のエラーが発生する可能性があります:

共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません

これは狂った状況? ldd コマンドを使用して確認できます:

shell> ldd /path/to/nginx libluajit-.so => not foundこのような問題は通常、ldconfig コマンドを使用して解決できます:

shell> echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf shell> ldconfig

Nginx を再度起動してみてください。問題ないはずです。

アプリケーション

まず簡単なプログラムで準備を整えましょう。次のコードを Nginx の構成ファイル nginx.conf に追加し、Nginx を再起動して、参照して効果を確認します。

location /lua { set $test "hello, world."; content_by_lua ' ngx.header.content_type = "text/plain"; ngx.say(ngx.var.test); '; }

ngx_lua を詳しく学ぶ前に、Brother Chun が書いた Nginx チュートリアルを注意深く読むことをお勧めします。

ここで重要なポイントについて説明します。Nginx 構成ファイルで使用される言語は、本質的に「手続き型」ではなく「宣言型」です。 Nginx がリクエストを処理するとき、命令の実行は命令が定義されたときの物理的な順序によって決まりません。Nginx で一般的に使用されるステージは、書き換えステージ、アクセス ステージ、コンテンツ ステージです。 、など。デモ コードの set 命令は rewrite ステージに属し、content_by_lua 命令は content ステージに属します。この 2 つの命令の順序を入れ替えてみても、プログラムは正常に実行できることがわかります。

Redis を使用して、より実践的な例を書いてみましょう。

まず、次の内容を含む Redis 構成ファイル config.json を作成する必要があります:

{ "host": "", "port": "" }

次に、Lua を使用する構成ファイルを解析するスクリプト init.lua を作成します。 CJSON モジュール:

local cjson = require "cjson"; local config = ngx.shared.config; local file = io.open("config.json", "r"); local content = cjson.decode(file:read("*all")); file:close(); for name, value in pairs(content) do config:set(name, value); end

説明: コードでは共有メモリが使用されているため、リクエストごとに構成ファイルを解析する必要はありません。

次に、Restyを使用してコンテンツをレンダリングするスクリプトcontent.luaを作成します。 Redis モジュール:

ngx.header.content_type = "text/plain"; local redis = require "resty.redis"; local config = ngx.shared.config; local instance = redis:new(); local host = config:get("host"); local port = config:get("port"); local ok, err = instance:connect(host, port); if not ok then ngx.log(ngx.ERR, err); ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE); end instance:set("name", "laowang"); local name = instance:get("name") instance:close(); ngx.say("name: ", name);

注: Resty Redis モジュールをベンダー ディレクトリに配置し、後で Nginx でセットアップすることをお勧めします。

最後に、Nginx 構成ファイルで設定する必要があります:

lua_shared_dict config 1m; lua_package_path "/path/to/vendor/?.lua;;"; init_by_lua_file /path/to/init.lua; server { lua_code_cache off; location /lua { content_by_lua_file /path/to/content.lua; } ... }

注: デバッグを容易にするために、lua_code_cache をオフにしました。実稼働環境の場合は、オンにする必要があります。

さらに、CJSON をインストールするときは、Makefile 内のヘッダー ファイルのパスに注意する必要があります。デフォルトは次のとおりです:

PREFIX = /usr/local LUA_INCLUDE_DIR = $(PREFIX)/include

LuaJIT をインストールする場合は、ヘッダー ファイルを対応するディレクトリにコピーすることをお勧めします。 :

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

最近参加した のプロジェクトは、Web ポーリング用のいくつかのインターフェイスを提供しており、すべて Nginx + Lua を使用して実装されていますが、サーバーは合計で十数台しかありませんが、毎日数十億のリクエストを提供できます。とてもパワフルな。

最後に、ある敗者の言葉を引用して締めくくりたいと思います。Lua は未婚の男性プログラマーのお気に入りです。

このエントリは、Lao Wang によってテクニカル カテゴリに公開され、Lua と Nginx のタグが付けられました。固定リンク お気に入りに追加します。

「NGINXとLUA」には29件のコメントがあります

以上、さまざまな側面を含めて nginx チュートリアルを紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windowsでnginxを構成する方法 Windowsでnginxを構成する方法 Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

Dockerによってコンテナを起動する方法 Dockerによってコンテナを起動する方法 Apr 15, 2025 pm 12:27 PM

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Docker用のコンテナを作成する方法 Docker用のコンテナを作成する方法 Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

Nginxバージョンを確認する方法 Nginxバージョンを確認する方法 Apr 14, 2025 am 11:57 AM

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

nginxサーバーがハングした場合はどうすればよいですか nginxサーバーがハングした場合はどうすればよいですか Apr 14, 2025 am 11:42 AM

NGINXサーバーがダウンすると、次のトラブルシューティング手順を実行できます。NGINXプロセスが実行されていることを確認します。エラーメッセージのエラーログを表示します。 nginx構成の構文を確認します。 nginxには、ファイルにアクセスするために必要な権限があることを確認してください。ファイル記述子をチェックして制限を開いてください。 Nginxが正しいポートで聴いていることを確認してください。 nginxトラフィックを許可するために、ファイアウォールルールを追加します。バックエンドサーバーの可用性を含む逆プロキシ設定を確認します。さらなる支援については、テクニカルサポートにお問い合わせください。

See all articles