nginx は弊社で最もよく使用されるサーバーで、コンテンツ配信やリバース プロキシによく使用されます。Lua は C に似たスクリプト言語で、ゲーム業界で広く使用されています。Web ゲームが流行していた 10 年前、伝説的なゲームのソース コードを購入したところ、ゲーム内のサーバーは Lua を使用して実装されていました。私たちは、バックエンドJavaに到達するリクエストの頻度を減らすために、オーバーセリングやアンダーセリング、ランキングなどのシンプルで実用的な機能を実行するために、nginx、envoy、redisとよく使用します。 次に、nginx + lua イメージの構築を開始します。自分で構築する理由は、他の人が提供したイメージにウイルスが含まれていることを恐れているためです。非公式の docker イメージには多くのウイルスが含まれているため、誰もが注意する必要があります。 この記事では、nginx の openresty バージョンを使用します。openresty、nginx、lua の具体的な手順については、Baidu で検索してください。 イメージをビルドする前に、nginx-module-vtsモジュールとopenresty-1.15.8.3の圧縮パッケージを用意する必要があります。この2つの圧縮パッケージは、Baiduで検索すると見つかります。公式アカウントの記事が外部リンクを挿入できるかどうかはわかりません。nginx-module-vtsモジュールの機能は、nginxのアクセスデータをカウントすることです。prometheus+grafanaを使用してnginxを監視する場合は、このモジュールをインストールする必要があります。一緒にコンパイルしましょう。 サーバー上にディレクトリを作成する cd /usr/local/docker mkdir -p nginx-lua/ビルド nginx-lua をインストールします 構築後の完全なディレクトリは次のとおりです。 root@today2:/usr/local/docker/nginx-lua# ツリー 。 ├── ビルド │ ├── Dockerファイル │ ├── nginx-module-vts.zip │ └── openresty-1.15.8.3.tar.gz ├── docker-compose.yml ├── ルア │ ├── test.lua ├── nginx.conf ├──wwwルート │ ├──index.html DockerファイルDockerfileファイルをビルドディレクトリに置き、ダウンロードしたnginx-module-vts.zipとopenresty-1.15.8.3.tar.gzもビルドディレクトリに置きます。 ubuntu:xenial より # データソースを更新 WORKDIR /etc/apt 実行 echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main limited universe multiverse' >sources.list 実行 echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main limited universe multiverse' >>sources.list 実行 echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main limited universe multiverse' >>sources.list 実行 echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main 制限付き宇宙 マルチバース' >>sources.list apt-get updateを実行する # 依存関係をインストールします。RUN apt-get install unzip make gcc libpcre3-dev libssl-dev perl build-essential curl zlib1g-dev --assume-yes # ツールパッケージをコピーします ADD openresty-1.15.8.3.tar.gz /usr/local/src nginx-module-vts.zip /usr/local/src を追加します。 # nginxモジュールvts ワークディレクトリ /usr/local/src nginx-module-vts.zip を解凍して実行します。 ワークディレクトリ /usr/local/src/openresty-1.15.8.3 rm -rf ./Makefile を実行します。 実行 ./configure --add-module=/usr/local/src/nginx-module-vts make && make install を実行します。 # Nginx を設定し、コメントアウトして、コンテナの起動時にコンテナにマウントします # ADD nginx.conf /usr/local/openresty/nginx/conf/ ワークディレクトリ / エクスポーズ80 CMD ["/usr/local/openresty/nginx/sbin/nginx", "-c", "/usr/local/openresty/nginx/conf/nginx.conf", "-g", "デーモンをオフ;"] nginx.confユーザー root; ワーカープロセスは自動です。 ワーカー_rlimit_nofile 65535; イベント { ワーカー接続 102400; epoll を使用します。 } http { server_tokens オフ; mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; アクセスログ access_log オフ; エラーログ /var/log/nginx/error.log; キープアライブタイムアウト65; クライアントの最大ボディサイズは10mです。 gzip オン; gzip_disable "msie6"; gzip_min_length 1000; gzip_proxied 期限切れ、キャッシュなし、保存なし、プライベート認証。 gzip_types text/plain application/xml application/javascript text/css application/x-javascript; # 次の 3 行は、nginx-module-vts モジュールをインストールした後に nginx トラフィック統計を設定するためのものです。この記事では主に lua について説明しているため、次の 3 行はコメントアウトできます。vhost_traffic_status_zone; vhost_traffic_status_filter_by_host がオン; vhost_traffic_status_filter_by_set_key $uri uri::$server_name; サーバー{ 聞く 80; ルート /usr/share/nginx/html; # lua スクリプトのキャッシュを有効にするかどうか。デバッグ段階ではオフに設定します (lua ファイルを変更した後に nginx を再起動する必要はありません)。パフォーマンスを向上させるには、正式な環境でこの行を必ずコメント アウトしてください lua_code_cache off; # この場所は、実際に Lua スクリプトを呼び出すための設定です。場所 /lua/test { #戻り値の型をjsonに指定します デフォルトのタイプは 'application/json' です。 # /lua/test にアクセスしたときに test.lua がコンテンツを返すように指定します。このパスはコンテナ内のパスであり、ホストと混同してはならないことに注意してください。content_by_lua_file '/usr/local/lua/test.lua'; } # トラフィック統計情報もコメントアウトできます。location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; } } } ドッカーの作成バージョン: '3.1' サービス: nginx: build: build # 左側のビルドは現在のコンテナがイメージをビルドする必要があることを意味し、右側のビルドはイメージビルドファイルがビルドディレクトリにあることを意味します restart: always コンテナ名: nginx network_mode: host # ホストモードを指定する必要はありません。これは利便性のためだけのものです。 nginx.conf は、/usr/local/openresty/nginx/conf にあります。 - ./log:/var/log/nginx/ - ./wwwroot:/usr/share/nginx/html - ./lua:/usr/local/lua テスト.lua./luaディレクトリにtest.luaファイルを作成します。 ngx.say('{"code": 1, "msg": "hello world!"}') コンテナを起動した後、IP:80/lua/test にアクセスすると、出力 {"code": 1, "msg": "hello world!"} が表示され、Lua スクリプトが有効になったことがわかります。 この時点で、nginx + lua が構築されました。今後の記事では、JWT 検証、Redis 操作、メッセージ キューなど、思いつく限り多くの機能を実現できる、よく使用される lua スクリプトをいくつか紹介します。 nginx+lua を使用して単一マシンで数万の同時呼び出しを実装する方法についての記事はこれで終わりです。nginx lua 単一マシン同時呼び出しに関する関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: アクティビティページでの CSS3 アニメーション効果の適用
一部の障害コード テーブルでは、履歴またはパフォーマンス上の理由から、次の設計パターンが使用されます...
広告を閉じるまでのカウントダウンを実装するために JavaScript を使用するまだフロントエンド...
基礎リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジ...
まず、イメージをプルします(またはコンテナを作成するだけで、自然にプルされます)。 docker p...
最初のもの: 1. 主要なヘッダーファイルを追加します。 #include <linux/of...
HTML タグ: 上付き文字HTML では、<sup> タグは上付き文字のテキストを定義...
トークンの有効期限が切れたら、ページを更新します。ページの読み込み時にバックエンドに複数のリクエスト...
1. ポート 80 が占有されているかどうかを確認します。通常、ポート 80 は Apache サー...
導入: AD は Active Directory の略称で、中国語では Active Direct...
サイト上のページを表示するためのリクエストがサーバーに送信されると(たとえば、ユーザーがブラウザでペ...
目次物語の始まりvimをインストールし、hadoop-hive.envを編集します。不注意で回避しま...
具体的なコードは次のとおりです。 HTMLコードは次のとおりです <div class=&qu...
Explain コマンドは、データベースのパフォーマンス問題を解決するために最初に推奨されるコマンド...
背景アプリケーション システムの数が増え続けると、当初はアラームを発していなかったアクティブ スレッ...
パフォーマンスの問題のあるSQL文を取得する方法1. ユーザーからのフィードバックを通じてパフォーマ...