画像の盗難を防ぐために 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 はグラフィック検証コードログインを実装します

推薦する

HTML チュートリアル: よく使われる HTML タグのコレクション (4)

関連記事:初心者が学ぶ HTML タグ (3)導入された HTML タグは、必ずしも XHTML 仕...

Linux カーネル デバイス ドライバー カーネル リンク リストの使用上の注意

/******************** * カーネルにおけるリンクリストの応用********...

MySQL 一時テーブルの簡単な使用法

MySQL 一時テーブルは、一時的なデータを保存する必要がある場合に非常に便利です。一時テーブルは現...

CSSマスクのフルスクリーン中央揃えを実装する方法

具体的なコードは次のとおりです。 <スタイル> #トーストローダーフルスクリーン{ 高さ...

WeChatアプレットが複数行テキストのスクロール効果を実現

この記事の例では、WeChatアプレットで複数行のテキストスクロールを実装するための具体的なコードを...

HTML で水平ナビゲーション構造を設定する方法

この記事では、主にリスト構造を使用して水平ナビゲーション構造を設定する 2 つの方法を紹介します。こ...

Tomcatがセッションを管理する方法の例

ConcurrentHashMapを学習しましたが、どのように適用すればよいかわかりませんか? To...

Dockerデータ管理とネットワーク通信の使用

Docker をインストールし、Docker コアとインストールを通じて簡単な操作を実行できます。 ...

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...

Docker ベースのよく使われる CentOS7 イメージの概要

目次1 Dockerをインストールする2 国内ミラーソースの設定3 中国語環境基本版Centos7イ...

Nexus を使用して Docker リポジトリを作成する方法

公式の Docker レジストリを使用して作成されたウェアハウスでは、イメージを削除してもデフォルト...

MySQLでユーザー認証情報を表示する具体的な方法

具体的な方法: 1. コマンドプロンプトを開く2. mysql -u root -pコマンドを入力し...

Linux ドライバ開発でよく使われる関数 copy_from_user open read write の詳細な説明

目次Linux ドライバーの共通機能 (copy_from_user open read write...

Tomcat が設定ファイルを外部に配置するためのソリューション

質問通常の開発では、プロジェクトを Tomcat にデプロイする場合、プロジェクトを war パッケ...

CSS @font-face パフォーマンス最適化の詳細な理解

この記事では主に、フォント読み込みの最適化に関する一般的な戦略を紹介します。内容の大部分は参考資料と...