ブラウザ リクエスト プロセス
2. Nginx コントロール ブラウザ キャッシュ設定
Nginx がコントロール ブラウザを渡すCache-Control (max-age) および Expires ヘッダー情報を追加してキャッシュします。
ngx_http_headers_module
構文
Syntax: expires [modified] time;
expires epoch | max | off;
Default: expires off;
Context: http, server, location, if in location
この設定項目は、HTTP の「有効期限」と「キャッシュ制御」を制御できます。応答「ヘッダー情報 (ページ キャッシュの制御に役割を果たします)。
「Expires」ヘッダー情報の有効期限は、現在のシステム時間と設定した時間値の合計です。 Modified パラメータが指定されている場合、有効期限はファイルの最終変更時刻と設定した時刻値の合計になります。 「Cache-Control」ヘッダーの内容は、時間を指定するシンボルによって異なります。時間値には正または負の数値を使用できます。 時間が負の数の場合、「Cache-Control: no-cache」; 時間が正の数または 0 の場合、「Cache-Control: max-age=time」、単位は秒です。
epoch パラメーターは、「Expires」の値を 1970 年 1 月 1 日、00:00:01 GMT として指定するために使用されます。 max パラメータは、「Expires」の値を「Thu, 31 Dec 2037 23:55:55 GMT」として、「Cache-Control」の値を 10 年として指定するために使用されます。 off パラメーターは、「Expires」および「Cache-Control」応答ヘッダー情報への追加または変更を無効にします。
3. アプリケーションの例
1. vim /etc/nginx/conf.d/static.conf
server {
location ~ .*\.(txt|xml)$ {
# 设置过期时间为1天
expires 1d;
root /vagrant/doc;
}
}
2. nginx -s reload nginx 設定ファイルを再ロードします
#3. /vagrant/doc/hello.txt ファイルを作成します ##4 .curl 経由で 192.168.33.88/hello.txt にアクセスし、http 応答ヘッダー情報を確認します [root/etc/nginx]# curl -I 192.168.33.88/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Tue, 17 Jul 2018 07:12:11 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Expires: Wed, 18 Jul 2018 07:12:11 GMT
Cache-Control: max-age=86400
Accept-Ranges: bytes
Expires と Cache-Control フィールドに注目してください。 hello.txt のキャッシュ時間が 1 日であることがわかります。 2. アンチホットリンク 目的: リソースの悪用を防ぐため アイデア: どのリクエストが異常なユーザーリクエストであるかを区別する
1 http_refer アンチホットリンク設定モジュールに基づく
#ngx_http_referer_module
SyntaxSyntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, location
none: Referer フィールドはありませんリクエスト ヘッダー blocked : リクエスト ヘッダーに「Referer」フィールドが存在しますが、その値はファイアウォールまたはプロキシ サーバーによって削除されています。これらの値は、「http://」または「http://」で始まらない文字列です。 "https://";server_names : "Referer" リクエスト ヘッダー フィールドにはサーバー名が含まれます 任意の文字列: サーバー名とオプションの URI プレフィックスを定義します。サーバー名の先頭または末尾に「*」を付けることができます。 「Referer」フィールドのサーバーポートはチェック時に無視されます。 正規表現: 文字列は ~ で始まる必要があります。正規表現は「http://」または「https://」の後の内容と一致することに注意してください。 例
valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.;
2. アプリケーションの例
1. vim conf.d/static.conf
server {
location ~ .*\.(txt|xml)$ {
# 配置防盗链规则
valid_referers none blocked 192.168.1.110 *.example.com example.* ~\.google\.;
# 如果不符合防盗链规则,则返回403
if ($invalid_referer) {
return 403;
}
root /vagrant/doc;
}
}
2. nginx -s reload nginx 設定ファイルをリロードします
#3. /vagrant/doc/hello.txt ファイルを作成します
vim /vagrant/a/a.txt
Hello world!
リファラーなしでも、通常どおりアクセスできます
[root~]# curl -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Fri, 03 Aug 2018 01:34:12 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
-
リファラーは http://www.baidu.com です。
-
[root~]# curl -e "http://192.168.1.110" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:31:51 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
リファラーは example. で始まるか .example.com で終わり、-
## にアクセスできます#
[root~]# curl -e "http://www.example.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:33:47 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
[root~]# curl -e "http://example.baidu.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:33:53 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
通常、referer は http://192.168.1.110 で、通常はアクセスできます
[root~]# curl -e "http://192.168.1.110" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:31:51 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
リファラーは http:// google.com 、403
[root~]# curl -e "http://google.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 403 Forbidden
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:37:43 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
リファラーは http://www を返します。 google.com にアクセスでき、通常どおりアクセスできます
[root~]# curl -e "http://www.google.com" -I http://127.0.0.1/hello.txt
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Thu, 02 Aug 2018 11:37:50 GMT
Content-Type: text/plain
Content-Length: 12
Last-Modified: Tue, 17 Jul 2018 07:07:22 GMT
Connection: keep-alive
ETag: "5b4d95aa-c"
Accept-Ranges: bytes
おすすめ関連記事: Nginx は静的リソース Web サービスとして機能し、静的リソースを実行します圧縮###########
|