nginxを使用して画像サイズを動的に変換し、サムネイルを生成します。

nginxを使用して画像サイズを動的に変換し、サムネイルを生成します。

Nginx ngx_http_image_filter_module モジュール (nginx バージョン 0.7.54+) を使用すると、JPEG、GIF、PNG、WebP 形式の画像サイズを動的に変換できます。

このモジュールはデフォルトではビルドされないため、--with-http_image_filter_module 構成パラメータを使用して有効にする必要があります。

画像トラフィックが大きくない場合は、このモジュールを使用できます。

このモジュールは libgd ライブラリを使用します。 最新バージョンのライブラリを使用することをお勧めします。

nginx がすでにインストールされている場合にこのモジュールを追加する手順は次のとおりです。

1 インストールの依存関係

yum -y gd-develをインストールします
yum -y libxslt-devel をインストールします
yum -y インストール perl-devel perl-ExtUtils-Embed

2 元のnginxパラメータを表示する

​ nginx -V

出力は次のようになります。

​ nginx バージョン: nginx/1.12.2
引数を設定します:

--with-http_image_filter_module があるかどうかを確認します。ある場合は、インストールされていることを意味します。ない場合は、インストールを続行します。

3 コンパイル

再コンパイルする場合は、元のものと同じバージョンの nginx ソースコードをダウンロードして解凍する必要があります。

--with-http_image_filter_module=dynamic と元のパラメータを追加します (再インストールするために make install コマンドを実行する必要はありません)

./configure --with-http_image_filter_module=dynamic
作る

4 元のnginxをバックアップする

cp -r /usr/local/nginx /usr/local/nginxbak

5 nginxをカバーする

cp objs/nginx /usr/local/nginx/sbin/
mkdir /usr/local/nginx/module
objs/ngx_http_image_filter_module.so を /usr/local/nginx/module/ngx_http_image_filter_module.so にコピーします。

6 設定ファイルを変更する

vim /usr/local/nginx/conf/nginx.conf

モジュールをロードします /usr/local/nginx/module/ngx_http_image_filter_module.so;
場所 ~* /images/(.+)_(\d+)x(\d+)\.(jpg|jpeg|gif|png)$ {
        $w $2 を設定します。
        $h $3 を設定します。
        image_filter のサイズを $w $h に変更します。
        image_filter_buffer 30M; #画像バッファの最大サイズを設定します。サイズが設定値を超えると、サーバーはエラー415を返します。
        image_filter_interlace をオン;
        画像フィルター jpeg 品質 80;
        try_files /$1.$4 /notfound.jpg;
        有効期限は1日です。
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        alias /home/publisherupload/ ; #root は、/images/ パスにアクセスするときに /User/XX/Desktop/images にアクセスできるようにします。root を alias に置き換えると、/User/XX/Desktop/ にアクセスします。/User/XX/Desktop/ は、ローカル マシン上の絶対パスです。
    }

場所 /画像 {
  alias /home/publisherupload/ ; #root は、/images/ パスにアクセスするときに /User/XX/Desktop/images にアクセスできるようにします。root を alias に置き換えると、/User/XX/Desktop/ にアクセスします。/User/XX/Desktop/ は、ローカル マシン上の絶対パスです。
  autoindex on; #ディレクトリ参照機能を開く}

7 nginx設定を再読み込みする

nginx の sbin ディレクトリに nginx の sbin ディレクトリを作成します。

8 テスト

最終的な画像アクセスアドレスは、元の画像アドレスの後に_width x heightパラメータを追加します。

http://110.87.103.58:12345/images/2021-01/202101250944272_500x400.png

参照する

https://cloud.tencent.com/developer/article/1644466

nginx を使用して画像サイズを動的に変換し、サムネイルを生成する方法についてはこれで終わりです。nginx による画像サイズの動的変換の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx + consul + upsync を使用して動的負荷分散を実現する方法の詳細な説明
  • Nginxにモジュールを動的に追加する方法
  • nginx ip ブラックリストの動的禁止の例
  • Nginx キャッシュ ファイルと動的ファイルの自動バランス設定スクリプト
  • Nginx ダイナミック DNS リバース プロキシの書き方をいくつか詳しく説明します
  • Nginxはインストールされたnginxに動的にモジュールを追加します
  • nginx にアクセスホワイトリストを動的に追加する方法
  • PHP と Nginx で動的な画像切り抜きソリューションを実現

<<:  主キーを追加または変更するMySQL SQL文操作

>>:  Vueのフロントエンドシステムとフロントエンドとバックエンドの分離の詳細な説明

推薦する

ウェブサイトのパフォーマンスを向上させるためのウェブサーバーの改善

<br />このシリーズの最初のセクションでは、Web サイトのパフォーマンスを向上させ...

バックエンド サーバー プロキシとして Nginx を推奨する理由 (理由分析)

1. はじめに実際のサーバーはパブリックインターネットに直接公開されるべきではありません。そうしな...

jsはシンプルなカウントダウンを実装します

この記事の例では、参考までに簡単なカウントダウンを実装するためのjsの具体的なコードを共有しています...

一般的な MySQL 関数の例の概要 [集計関数、文字列、数値、時刻と日付の処理など]

この記事では、よく使用される MySQL 関数について説明します。ご参考までに、詳細は以下の通りです...

vuex で履歴を実装するためのサンプルコード

私は最近、ユーザー操作を元に戻す、またはやり直す機能を備えたビジュアル操作プラットフォームを開発して...

一意の注文番号を生成するためのMySQLの高同時実行方法

序文このブログ記事が公開された後、何人かの友人からSQL Serverバージョンがあるかどうか尋ねら...

MySQLとSpringの自動コミットの詳細な説明

1 MySQLの自動コミット設定MySQL はデフォルトで自動的にコミットします。つまり、各 DML...

ウェブサイトのデザインでは色の階層感覚に注意を払う必要があります

最近、私はデザインには階層感覚が必要だと言っています。この階層感覚には、色の重ね合わせや要素の重ね合...

vuex での Getter の使用法の詳細な説明

序文Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパテ...

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

入力[type=file]の起動が遅くて動かなくなる問題を素早く解決します

入力タグタイプがファイルで、タグ内にaccpet="image/*"属性が設定さ...

正の整数かどうかを判断するMYSQLカスタム関数の例コード

関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...

Vueのプラグインの仕組みとインストールの詳細を深く理解する

序文: Vue を使用する場合、多くの場合、カスタム プラグインをいくつか使用して記述し、 Vue....

Reactプロジェクトの新規作成からデプロイまでの実装例

新しいプロジェクトを始めるこの記事では主に、新規プロジェクトを0から1まで取り組むプロセスを記録し、...