目次
アンチホットリンク保護の解釈
ホットリンクとは何ですか?
Web ページの読み込みシーケンスは、最初に HTML 関連のコンテンツを読み込み、次に HTML コンテンツを解析します。画像を読み込む必要があるものとファイルを読み込む必要があるものは段階的に読み込まれます。オンライン画像やその他の静的リソースの場合は、これらは他の Web サイトによって盗まれることがよくあります。外部からページをリクエストした後、このページは通常、そのページ内の静的リソースをリクエストします。このとき、リクエスト ヘッダーには現在のリクエストのソースを示す Refer フィールドがあります。指定したソースからのリクエストが返されるように制限することができ、それ以外の場合はリクエストが返されないため、リソースの盗難を防ぐことができます。
リファラーは、
HTTP プロトコルに「ページまたはリソース」のソースを示すために使用される「リクエスト ヘッダー」があることを理解します。このリクエスト ヘッダーはリファラーと呼ばれます --> リファラーはリクエストの送信元の URL を示します。リーチング対策機能は、HTTP プロトコルがサポートする Referer メカニズムに基づいており
、Referer を通じてソースを追跡し、ソースを特定して判断します。
Nginx でのアンチホットリンクの構成
valid_referers none|server_name
有効な参照値を設定してください
- none: 検出アドレスに参照がない場合は有効です。
- server_name: ホスト アドレスを検出します。参照がこのアドレスからのものであることが示されている場合、それは有効です (server_name は完全である必要があります
http://xxxx
)
注:
if ($invalid_referer)
if の後にスペースがあるため、記述しないとエラーが報告されます。
nginx: [emerg] unknown directive "if($invalid_referer)" in
/usr/local/nginx/conf/nginx.conf:27
ここでは、nginx サーバーの img ディレクトリ内の画像にアクセスする前に http:192.168.174/134 を参照する必要があるように設定されています。
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://xxx;
}
location /img{
valid_referers http:192.168.174/134;
if ($invalid_referer){#无效的
return 403;#返回状态码403
}
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
- この画像を参照するページと対応する参照先が設定されていない場合、画像を読み込むことができません。
- 画像アドレスに直接アクセスすると、ソースを指す参照フィールドがないため、Nginx ページが直接表示されます。
アンチホットリンクをテストするにはcurlを使用してください
1.# 安装 curl 命令
yum -y install curl
2.# 测试,在 103 机器中访问 101
curl -I http://192.168.44.101/img/logo.png
-I:不带 Referer ,只是给我们返回响应的一些头信息。
curl -e "http://baidu.com" -I http://192.168.44.101/img/logo.png
-e:"http://baidu.com" 为 Referer,返回响应的一些头信息
ホットリンク画像を設定する
プロンプト画像を html/img/x.png に配置すると、ホットリンク防止を設定するために画像にアクセスすると、この x.png 画像が返されます。
location /img{
valid_referers http:192.168.174/134;
if ($invalid_referer){#无效的
rewrite ^/ /img/x.png break;
}
root html;
index index.html index.htm;
}
高可用性の解釈
高可用性 HA (High Availability) は、分散システム アーキテクチャの設計において考慮する必要がある要素の 1 つであり、通常、システムがサービスを提供できない時間を設計によって削減することを指します。
Nginx の高可用性とは、1 つの Nginx がダウンした場合でも、他の Nginx がリクエストを処理するという事実を指します。
キープアライブ
- Keepalived は、Linux 用の次の軽量高可用性ソリューションであり、仮想ルーティング冗長プロトコルを使用してサービスまたはネットワークの高可用性を実現します。
- これは元々 LVS 用に設計されており、特にクラスター システム内の各サービス ノードのステータスを監視するために使用されます。
- サーバー ノードに障害が発生すると、Keepalived がそれを検出し、そのノードをクラスタ システムから自動的に削除します。
- 障害が発生したノードが正常に戻った後、Keepalived はノードを自動的にクラスターに再参加させることができます。
- これらのタスクは自動的に完了するため、手動による介入は必要ありません。手動で行う必要があるのは、障害が発生したノードを修復することだけです。
nginx マスターがダウンした場合、keepalived はサービスを nginx スレーブに切り替えてビジネスに影響がないことを確認し、 nginx 単一マシンの障害の問題を回避し、高可用性を実現します。
Nginx での高可用性の構成
キープアライブをインストールする
yum install -y keepalived
キープアライブ構成を変更する
- 設定ファイルは /etc/keepalived/keepalived.conf にあります。
vrrp_instance
、、、、これらの同じマシンは同じグループに属すると考えることができますauthentication
。このグループのみがマスター マシンとして 1 台を選択します。virtual_router_id
virtual_ipaddress
ここでは 2 台のマシンをセットアップし、それぞれ keepalived をダウンロードして設定します。
マシン 1:
! Configuration File for keepalived
global_defs {
router_id lb1 # 名字与其他配置了keepalive的机器不重复就行
}
vrrp_instance heyingjie {#vrrp实例名可以随意取
state MASTER #只能有一个默认的Master,其他写BACKUP
interface ens33 # ip addr查看下网卡名,默认时ens33
virtual_router_id 51
priority 100 # 多台安装了keepalived的机器竞争成为Master的优先级
advert_int 1 #通信时间
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16 #虚拟IP
}
}
マシン 2:
! Configuration File for keepalived
global_defs {
router_id lb2
}
vrrp_instance heyingjie {
state BACKUP #只能有一个默认的Master,其他写BACKUP
interface ens33
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16 #虚拟IP
}
}
コマンドを使用してip addr
マシン 1 の IP 情報を表示すると、仮想 IP が表示されます。