画像の盗難を防ぐために Nginx で Referer を設定する方法

画像の盗難を防ぐために Nginx で Referer を設定する方法

サーバーの画像が他のウェブサイトからホットリンクされると、サーバーの帯域幅とアクセス速度に影響します。このため、画像ファイルまたはビデオファイルに対してアンチホットリンク機能を設定する必要があります。

アンチホットリンク機能とは、簡単に言えば、リソースに直接アクセスすることはできるが、自分のサーバーにリソースリンクを置いて他の人がアクセスできないようにする機能です。特に、画像やビデオなどの大きなファイルは、サーバーの応答が非常に遅くなる可能性があります。

画像ホスティングサービスでなかったら、他のウェブサイトが当サイトの写真を直接使用してしまうのではないかと本当に心配です。こうなると、あっという間にトラフィックを使い果たしてしまう可能性があります。結局、CDN は多額のお金で購入されるのです。 したがって、アンチホットリンクを設定することをお勧めします。Nginx はこの機能を実行できます。

一般的に、HTTP プロトコルに準拠したブラウザが Web サイト A から Web サイト B にアクセスすると、クリック元を示すために現在の Web サイトの URL が含まれます。したがって、Nginx のこのモジュールもこれが実装されることに依存しています。したがって、ハッカーがこのヘッダーを追加しないと、画像の盗難を防ぐことはできません。

Nginx 公式サイトのドキュメントは次のとおりです。

構文: valid_referers none | blocked | server_names | string ...;
デフォルト: -
コンテキスト: サーバー、場所

nginx リファラ ディレクティブの紹介

nginx モジュール ngx_http_referer_module は、通常、不正なドメイン名からのリクエストをブロックするために使用されます。Referer ヘッダーを偽装するのは非常に簡単なので、このモジュールはほとんどの不正なリクエストをブロックするためにのみ使用できることに注意してください。正当なリクエストには referer ソース ヘッダーが含まれないことがあるため、空のソース ヘッダー (referer) を持つリクエストを拒否しないこともあります。

したがって、server または location ブロックにコードを追加できます。これを valid_referers.conf として保存しました。

valid_referers なし、ブロックされた server_names;

($invalid_referer) の場合 {
 403 を返します。
}

次に、必要な場所に include /etc/nginx/valid_referers.conf を追加します。もちろん、これを実行するための前提は、valid_referers.conf が対応するマシンの /etc/nginx/valid_referers.conf パスに配置されていることです。

例:

 場所 /articles/img {
  /etc/nginx/valid_referers.conf を含めます。
  ルート /data/blog/code;
 }

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

以下もご興味があるかもしれません:
  • Nginxはリファラディレクティブを使用してアンチホットリンク設定を実装します
  • リファラーディレクティブを使用して、画像のホットリンクを防止するためにNginxサーバーを設定します。

<<:  Vueはグラフィック検証コードを実装する

>>:  Vue はグラフィック検証コードログインを実装します

推薦する

知らないかもしれないmysqldumpパラメータ

前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...

nginxリバースプロキシを使用するときに長時間接続を維持する方法

・【シーン説明】 HTTP1.1 以降、HTTP プロトコルは永続的な接続 (長い接続とも呼ばれます...

WindowsシステムでPhPStudy MySQLの起動に失敗する問題を解決する

エラーを報告するApache\Nginx サービスは正常に起動しましたが、MySQL は起動に失敗し...

Vue プロジェクトを実行するときに `--fix` オプションで修正できる可能性のある警告のエラー問題を解決します。

問題: vue-cil3 は、`--fix` オプションで修正できる可能性のある警告とともに実行され...

フロントエンドブラウザのフォントサイズが12px未満のソリューション

序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...

JavaScript の静的スコープと動的スコープを例を使って説明します

目次序文静的スコープと動的スコープ静的スコープ実行プロセス動的スコープ実行プロセスエクササイズ練習1...

HTMLチュートリアル、簡単に学べるHTML言語

1. <body background=画像ファイル名 bgcolor=color text=...

DockerコンテナのライフサイクルアーキテクチャとVMとの違いについて詳しく説明します。

コンテナのライフサイクルコンテナランタイムのライフサイクルコンテナは、分離特性を持つプロセスのセット...

JSONP クロスドメインシミュレーション Baidu 検索

目次1. JSONPとは何か2. JSONPクロスドメインリクエスト3. Baidu検索をシミュレー...

ウェブページのグリッドデザインを考える

<br />元のアドレス: http://andymao.com/andy/post/8...

HTML でのテキストエリアの使用と一般的な問題およびケース分析

textarea タグはよく使われる HTML タグです。主に長いテキストを入力するときに改行するた...

MySQL <> および <=> 演算子の紹介

<> 演算子機能: 等しくないことを示します。注: 「!=」演算子と同じ機能を持ちますが...

RGBカラーテーブルコレクション

RGBカラーテーブル色英語名RGB 16色雪255 250 250 #FFFAFAゴーストホワイト2...

MySql 範囲内の検索時にインデックスが有効にならない理由の分析

1 問題の説明この記事では、確立された複合インデックスをソートし、レコード内の非インデックス フィー...

MySQLクライアントとサーバーのプロトコルの解釈

目次MySQL クライアント/サーバー プロトコルMySQL サーバーから高いパフォーマンスを得る必...