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にインポートする際に発生する問題と解決策の分析

推薦する

CentOS 上の Docker に Jupyter をインストールしてポートを開く方法

目次jupyterをインストールするDocker ポートマッピングjupyterをインストールするp...

ウェブページのコアコンテンツ(画像とテキスト)の視覚的表現の紹介

情報の最適化と改良は常にデザインの最初のステップです。 「これは百度アライアンスユーザーエクスペリエ...

JavaScript 基礎シリーズ: 関数とメソッド

目次1. 関数とメソッドの違い2. 良い関数の書き方2.1 正確な命名2.1.1 関数の命名2.1....

Vue を使用してモバイル APK プロジェクトを完了することについての簡単な説明

目次基本設定エントリファイル main.jsアプリ.vue表紙ヘッダー検索バー本体当プロジェクトでは...

VMware WorkStation を Docker for Windows で使用するための詳細なチュートリアル

目次1. はじめに2. Windows用Dockerをインストールする1. Windows用Dock...

デザイン理論:フォントデザインの基礎

<br />言葉は、人間の思考や感情を伝えるために必然的に生み出されるものです。人類の文...

Linux で open-vswitch をインストールおよびアンインストールする方法

1. ソースコードからovsをコンパイルしてインストールします。依存関係をインストールします: # ...

フレックスレイアウトを使用してページレイアウトを簡単に実装するためのサンプルコード

では、早速コードを見てみましょう。 1. 上部、中央、下部のレイアウト: <!DOCTYPE ...

Web デザインの経験: 独善的な Web デザイナー

1. ゴミかクラシックか? Web テクノロジーは急速に更新されており、Web サイトのインターフェ...

上部の固定divは半透明効果に設定できます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

HTML でのアンカーポイントの使用_PowerNode Java アカデミー

ここで、アンカー ポイントを制御するいくつかの状況をまとめてみましょう。 1. 同じページ <...

CSS による要素の中央揃えの原理の分析

CSS で要素の水平方向と垂直方向の中心を設定することは、非常に一般的な要件です。しかし、理論的には...

JavaScriptのアンチシェイクとスロットリングとは

目次1. 関数デバウンス1. 画像安定化とは何ですか? 2. 関数のスロットリング2.1 タイマーの...

デザイン: 意志の強いデザイナー

<br />長年の専門的なアートデザイン教育を通じて「美とは何か」を学びましたが、「美を...

Linuxシステムにおける重要なサブディレクトリの問題について話す

/etc/fstabパーティション/ディスクを自動的にマウントし、マウントするパーティション/デバイ...