Nginx のアンチホットリンクを設定する方法

Nginx のアンチホットリンクを設定する方法

実験環境

• 最小限のインストール済みの CentOS 7.3 仮想マシン
• 構成: 1 コア/512MB
•nginx バージョン 1.12.2

1. ホットリンクウェブサイトを設定する

1. nginx仮想マシンを起動し、2つのWebサイトを構成する

vim /etc/nginx/conf.d/vhosts.conf

次のコンテンツを追加します

サーバー{
 聞く 80;
 サーバー名 site1.test.com;
 ルート /var/wwwroot/site1;
 インデックス index.html;

 位置 / {
 }
}

サーバー{
 聞く 80;
 サーバー名 site2.test.com;
 ルート /var/wwwroot/site2;
 インデックス index.html;

 位置 / {
 }
} 

2. ホストマシンのC:\Windows\System32\drivers\etc\hostsファイルを編集します。

192.168.204.11 サイト1.test.com
192.168.204.11 サイト2.test.com

3. ウェブサイトのルートディレクトリを作成する

mkdir /var/wwwroot
/var/wwwroot に移動します
mkdir サイト1
mkdir サイト2
echo -e "<h1>site1</h1><img src='1.jpg'>" >> site1/index.html
echo -e "<h1>site2</h1><img src='http://site1.test.com/1.jpg'>" >> site2/index.html

4. 1.jpgを/var/wwwroot/site1ディレクトリにアップロードします。

5. nginxサービスを開始する

systemctl nginx を再起動します
netstat -anpt | grep nginx 

6. ファイアウォールのポート80を開く

強制0を設定する
ファイアウォールコマンド --zone=public --add-port=80/tcp --permanent
ファイアウォール-cmd --reload

7. ホストマシンへのアクセス

このサイトについて

http://site2.test.com

2. site1.test.comのアンチホットリンクを設定する

1. nginx設定ファイルを編集する

サーバー{
 聞く 80;
 サーバー名 site1.test.com;
 ルート /var/wwwroot/site1;
 インデックス index.html;

 位置 / {
 }

 場所 ~ \.(jpg|png|gif|jpeg)$ {
  有効なリファラー site1.test.com;
  ($invalid_referer) の場合 {
   403 を返します。
  }
 }
}
サーバー{
 聞く 80;
 サーバー名 site2.test.com;
 ルート /var/wwwroot/site2;
 インデックス index.html;

 位置 / {
 }
} 

2. nginxサービスを再起動する

systemctl restart nginx

3. ホストマシンへのアクセス

ブラウザのキャッシュをクリアして、http://site1.test.com にアクセスします。

ブラウザのキャッシュをクリアして、http://site2.test.com にアクセスしてください。

アンチホットリンク設定が役割を果たしていることがわかります

3. 他のリソースを返すようにアンチホットリンクを設定する

1. nginx設定ファイルを編集する

アンチホットリンクで保護されたリソースを書き換えるための仮想ホストを追加する

サーバー{
 聞く 80;
 サーバー名 site1.test.com;
 ルート /var/wwwroot/site1;
 インデックス index.html;
 位置 / {
 }
 場所 ~ \.(jpg|png|gif|jpeg)$ {
  有効なリファラー site1.test.com;
  ($invalid_referer) の場合 {
   書き換え^/ http://site3.test.com/notfound.jpg;
   #403 を返します。
  }
 }
}
サーバー{
 聞く 80;
 サーバー名 site2.test.com;
 ルート /var/wwwroot/site2;
 インデックス index.html;
 位置 / {
 }
}
サーバー{
 聞く 80;
 サーバー名 site3.test.com;
 ルート /var/wwwroot/site3;
 インデックス index.html;
 位置 / {
 }
}

説明する

location ~ \.(jpg|png|gif|jpeg)$ {} は、アンチホットリンクを設定するファイルの種類で、縦線 | で区切られます。
valid_referers site1.test.com *.nginx.org; はスペースで区切られたホワイトリストです。ワイルドカードドメイン名を設定するには * を使用できます。
if ($invalid_referer) {} は、ホワイトリストに適合しているかどうかを判断するために使用されます。ホワイトリストに適合していない場合は、{} 内のコンテンツが実行されます。
rewrite ^/ http://site3.test.com/notfound.jpg; はリソースを書き換えます。ホワイトリストに一致しない場合は、このアドレスに書き換えられます。
return 403; は返されるステータス コードが 403 であることを意味します。

2. site3ルートディレクトリを作成する

/var/wwwroot に移動します
mkdir サイト3
echo -e "<h1>site3</h1><img src='notfound.jpg'>" >> site3/index.html

3. notfound.jpgファイルを/var/wwwroot/site3ディレクトリにアップロードします。

4. nginxサービスを再起動する

systemctl restart nginx

5. ホストマシン上のC:\Windows\System32\drivers\etc\hostsファイルを編集します。

site3.test.com のマッピングを追加する

192.168.204.11 サイト1.test.com
192.168.204.11 サイト2.test.com
192.168.204.11 サイト3.test.com

6.ホストマシンでhttp://site2.test.comにアクセスします。

ご覧のとおり、site2 で盗まれた site1 の 1.jpg ファイルは、site3 の notfound.jpg ファイルにリダイレクトされます。

要約する

以上が、私が紹介したNginxのアンチホットリンクを設定する操作方法です。お役に立てれば幸いです。ご質問があれば、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Linux での Nginx アンチホットリンクと最適化の実装コード
  • Nginx でホットリンクを防ぐ 3 つの方法
  • Nginx アンチホットリンク設定方法
  • Nginx サーバーでのホットリンク防止方法の紹介
  • Nginx イメージホットリンク保護設定例
  • Nginx でアンチホットリンクを設定するための手順を完了する
  • Nginxのアンチホットリンクとサービス最適化設定の全プロセス

<<:  VueのSSRサーバーサイドレンダリング例の詳細な説明

>>:  大量のデータをMySQLにインポートする際に発生する問題と解決策の分析

推薦する

Vueプロジェクトでスケルトンスクリーンを使用する方法

現在、アプリケーション開発は基本的にフロントエンドとバックエンドに分離されています。主流のフロントエ...

ElementUI コンポーネント el-dropdown (落とし穴)

選択して変更: クリックすると現在の値が表示され、ページ UI が表示され、CSS スタイルが変更さ...

Vuex のモジュール化と名前空間の例のデモ

1. 目的:コードの保守が容易になり、さまざまなデータの分類が明確になります。 2. store/i...

JavaScript でよく使われる 3 つの Web エフェクトの詳細な説明

目次1要素オフセットシリーズ1.1 オフセットの概要1.2 オフセットとスタイルの違い視覚領域クライ...

Bツリーの特性の紹介

B ツリーは一般的なデータ構造です。彼と一緒にB+ツリーがあります。ここで、概念を明確にする必要があ...

Vue のループフォーム項目例の詳細な説明

場合によっては、ユーザーがボタンをクリックして同様のフォームを追加し、クリックごとに 1 回追加でき...

MySQL Innodbインデックスの原理の詳細な説明

導入振り返ってみると、4年前、私がMySQLのインデックスについて学んでいたとき、先生はインデックス...

DockerでRedisをデプロイして起動する方法

DockerでRedisをデプロイするまずLinuxにDockerをインストールし、次にDocker...

MySQL複合クエリの詳細な説明

UNIONの使用ほとんどの SQL クエリは、1 つ以上のテーブルからデータを返す単一の SELEC...

Vueはプログレスバーの変更効果を実現します

この記事ではVueを使ってプログレスバーの変更を簡単に実装してみましたので参考にしてください。具体的...

div の高さをブラウザの高さに合わせて調整する方法

この古くからある疑問は、数え切れないほどのフロントエンド開発者やバックエンドプログラマーを悩ませてき...

Centos6.5 glibc アップグレードプロセスの紹介

目次シナリオ要件glibc バージョンglibcのインストールglibc ソフトリンクシナリオ要件C...

Intelli Idea で Tomcat 設定が見つからない問題の解決方法

2日前に新しい会社に入社しました。その会社ではIntelli Ideaを使っています。Eclipse...

mysql 5.7.11 winx64 初期パスワード変更

公式サイトからMySQL-5.7.11-winx64の圧縮版をダウンロード。インストール後、パスワー...

nginx プロキシ サーバーで双方向証明書検証を構成する方法

証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...