Nginx グローバル変数 Nginx には、$variable 名を通じて使用できるグローバル変数が多数あります。よく使用されるグローバル変数をいくつか示します。
Nginx の場所 位置 location ディレクティブは、ユーザーが要求した URI に基づいてさまざまなアプリケーションを実行するために使用されます。つまり、ユーザーが要求したウェブサイトのアドレス URL に応じてマッチングが行われ、マッチングが成功した場合に対応する操作が実行されます。 文法
ルールの優先順位 = より高い^~ より高い~* 等しい~ より高い/ 例1 場所 = "/12.jpg" {...} のように: www.syushin.com/12.jpg は一致しますが、www.syushin.com/abc/12.jpg は場所 ^~ "/abc/" { ... } と一致しません。 のように: www.syushin.com/abc/123.html は www.syushin.com/a/abc/123.jpg と一致しますが、場所 ~ "png" { ... } とは一致しません。 のように: www.syushin.com/aaa/bbb/ccc/123.png は www.syushin.com/aaa/png/123.html と一致し、場所は ~* "png" { ... } と一致します。 のように: www.syushin.com/aaa/bbb/ccc/123.PNG は www.syushin.com/aaa/png/123.html と一致し、場所 /admin/ { ... } と一致します。 のように: www.syushin.com/admin/aaa/1.php は一致しますが、www.syushin.com/123/admin/1.php は一致しません 知らせ: 位置情報サポートに関する一部の情報が一致しません!~ 例: location !~ 'png'{...} これは間違っています。場所はサポートされていません!~ このような要件がある場合は、if (location priority is less than if) を通じて実装できます。例: if ($uri !~ 'png') { ... } アクセス制御 Web2.0 時代では、多くの Web サイトがユーザー中心になっており、ユーザーがコンテンツをサーバーに公開できます。アップロード機能はユーザーに公開されているため、ハッカーがトロイの木馬プログラムなどをアップロードするなど、セキュリティ上の大きなリスクがあります。そのため、アクセス制御を設定する必要があります。 拒否と許可 文字通り拒否と許可として理解するのは簡単です。 Nginx の deny および allow ディレクティブは、Nginx インストールにデフォルトで組み込まれている ngx_http_access_module モジュールによって提供されます。 文法 構文: 特定の IP または IP セグメントへのアクセスを許可/拒否することを意味します。unix: が指定されている場合は、ソケット アクセスが許可されます。 注: この機能は Unix 1.5.1 で新しく追加されました。 nginx では、許可ルールと拒否ルールが順番に実行されます。 例1: 位置 / { 192.168.0.0/24 を許可します。 127.0.0.1 を許可します。 すべてを否定する; } 注: この構成値は、192.168.0.0/24 ネットワーク セグメントと 127.0.0.1 からの要求を許可し、その他のすべての送信元 IP アドレスを拒否します。 例2: 場所 ~ "admin" { 192.168.30.7 を許可します。 すべて否定する } 注: アクセスされた URI には管理者リクエストが含まれており、IP 192.168.30.7 からのリクエストのみが許可されます。 位置情報に基づくアクセス制御 日常生活では、アクセス制御は基本的に場所と連動して設定されます。直接的な例を見てみましょう。 例1: 場所 /ブログ/ { すべてを否定する; } 注: /blog/ ディレクトリでは、すべてのアクセスが禁止されています。ここでの deny all; は、403; を返すように変更できます。 例2 場所 ~ ".bak|\.ht" { 403 を返します。 } 注意: アクセスした URI に .bak または .ht が含まれている場合は、403 ステータス コードが直接返されます。 テストリンクの例:
ユーザーが入力した URL が上記のいずれかの場合、403 が返されます。 例3 場所 ~ (データ|キャッシュ|tmp|画像|添付ファイル).*\.php$ { すべてを否定する; } 注意: データ、キャッシュ、tmp、画像、添付ファイルを含み、.php で終わるすべての要求された URI へのアクセスは禁止されています。 テストリンクの例:
$document_uri ベースのアクセス制御 前述したように、組み込み変数 $document_uri は、現在のリクエストに指示が含まれていない URI を意味します。 たとえば、www.123.com/1.php?a=1&b=2 の $document_uri は 1.php であり、次のパラメータは含まれません。 この変数に対してアクセス制御を行うことができます。 例1 ($document_uri ~ "/admin/") の場合 { 403 を返します。 } 注: 要求された URI に /admin/ が含まれている場合、403 が直接返されます。 注意: allow と deny は if 構造ではサポートされていません。 テストリンク: 1. www.xxxxx.com/123/admin/1.html に一致する 例2 ($document_uri = /admin.php) の場合 { 403 を返します。 } 注: 要求された URI が /admin.php の場合、403 ステータス コードが返されます。 テストリンク: 1. www.xxxxx.com/admin.php # 一致 例3 $document_uri が '/data/|/cache/.*\.php$' の場合 { 403 を返します。 } 注: 要求された URI にデータまたはキャッシュ ディレクトリが含まれており、PHP である場合、403 ステータス コードが返されます。 テストリンク: 1. www.xxxxx.com/data/123.php # 一致 $request_uri ベースのアクセス制御 $request_uri には $docuemnt_uri よりも多くのリクエスト パラメータがあります。主に要求された URI 内のパラメータを制御します。 例 ($request_uri ~ "gid=\d{9,12}") の場合 { 403 を返します。 } 注: \d{9,12} は正規表現で、9 ~ 12 個の数字を意味します。たとえば、gid=1234567890 はシンボル要件を満たしています。 テストリンク: 1. www.xxxxx.com/index.php?gid=1234567890&pid=111 が一致 背景知識: CC によって攻撃を受けたクライアントの Web サイトがありました。相手側は次のようなリクエストを多数送信しました: /read-123405150-1-1.html $http_user_agent に基づくアクセス制御 (クローラー対策) User_agent は、単純にブラウザ識別子として理解できます。一部のスパイダー クローラーも user_agent によって識別できます。アクセス ログを観察すると、一部の検索エンジン スパイダーが Web サイトを非常に頻繁に訪問していることがわかります。これは好ましくありません。サーバーへの負荷を軽減するために、主流の検索エンジン スパイダーを除くすべてのスパイダー クローラーをブロックすることもできます。 例 ($user_agent ~ 'YisouSpider|MJ12bot/v1.4.2|YoudaoBot|トマト') の場合 { 403 を返します。 } 注: 上記のキーワードを user_agent に含むすべてのリクエストは、403 ステータス コードを返します。 テスト: 1. curl -A "123YisouSpider1.0" $http_referer ベースのアクセス制御 アンチホットリンク機能に加えて、$http_referer はいくつかの特別な要件を満たすこともできます。 例えば: ウェブサイトがハッキングされ、検索エンジンによってインデックスされたウェブページに問題がありました。検索エンジンを通じてウェブサイトをクリックすると、ギャンブルのウェブサイトが表示されました。 例 $http_referer が 'baidu.com' の場合 { 404 を返します。 } または $http_referer が 'baidu.com' の場合 { 200 を返します "<html><script>window.location.href='//$host$request_uri';</script></html>"; } Nginx パラメータの最適化 高性能 Web サーバーである Nginx は、構成パラメータを調整しなくても、多数の同時リクエストを処理できます。もちろん、構成のチューニングにより Nginx のパフォーマンスはより強力になりますが、構成パラメータはサーバーのハードウェア パフォーマンスを参考にして組み合わせる必要があります。 ワーカープロセスの最適化 ワーカープロセス数;
ワーカー_rlimit_nofile
ワーカー接続 このパラメータは、各 Nginx ワーカー プロセスが処理できる接続の最大数を構成するために使用されます。 http/tcp接続数を最適化する epollを使用する
マルチ_受け入れオン
ファイル送信オン
tcp_nopush オン
tcp_nodelay オン
(Nagleのアルゴリズムについて) 1 バイトなどの小さなデータ パケットを頻繁に送信する必要がある場合は、IPv4 を例にとると、各パケットに 40 バイトのヘッダーを付ける必要がります。 キープアライブタイムアウト
キープアライブリクエスト
reset_timeout_connection オン
クライアント本体タイムアウト
送信タイムアウト
圧縮 プレーンテキスト コンテンツの場合、Nginx は gzip 圧縮を使用できます。圧縮技術を使用すると、帯域幅の消費を削減できます。 ngx_http_gzip_module モジュールでサポートされています 構成は次のとおりです。 gzip on; //gzip 機能を有効にするgzip_min_length 1024; //要求されたリソースがこの値 (バイト単位) を超えた場合にのみ圧縮されるように設定するgzip_buffers 16 8k; //圧縮に使用するバッファ サイズを設定する。最初の数字はバッファ サイズ、2 番目はバッファ サイズである。gzip_comp_level 6; //圧縮レベルを 1 ~ 9 の範囲で設定する。9 は最高の圧縮レベルであり、CPU リソースを最も多く消費する。gzip_types text/plain application/x-javascript text/css application/xml image/jpeg image/gif image/png; //圧縮する必要があるファイルの種類を指定するgzip_disable "MSIE 6\."; //IE6 ブラウザでは圧縮が有効にならない テスト: curl -I -H "Accept-Encoding: gzip、deflate" http://www.xxxxx.com/1.css ログ
静的ファイルの有効期限 静的ファイルの場合、これらのリソースをクライアント ブラウザーにキャッシュできるように有効期限を設定する必要があります。 設定例は次のとおりです。 場所 ~* ^.+\.(gif|jpg|png|css|js)$ { expires 1d; //1d は 1 日を意味しますが、1 日を表すために 24h を使用することもできます。 } アクセス制御やパラメータチューニングは一部だけ記録していますが、一部は仕事で使うかもしれません。SSL設定については後ほどメモしておきます。春採用の筆記試験は難易度が高いので、しっかり勉強しましょう... 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: CocosCreatorで複数のタイマーを使用する方法の詳細な説明
>>: SQL 文における複合主キーと結合主キーに関する予備的研究
//デフォルトプロトコル/ デフォルト プロトコルの使用は、リソース アクセス プロトコルが現在の...
目次導入1. MySQLデータベースの全体的なアーキテクチャSQL インターフェースパーサーオプティ...
クローラー対策ポリシー ファイルを追加しました: vim /usr/www/server/nginx...
1 はじめにデータベース内のデータを操作するための SQL 文を記述するときに、いくつかの不快な問題...
サーバーサイドレンダリング (SSR) を使用する理由検索エンジンのクローラーが完全にレンダリングさ...
ローカルEclipse上にTomcatサーバーを作成する場合、 tomcaインストールディレクトリの...
WeChatアプレット:シンプルな計算機、参考までに、具体的な内容は次のとおりです。ミニプログラムに...
cpanel 管理バックエンドを開き、「詳細」オプションの下に「Clock Guardian Job...
序文Dockerを使ってHadoopクラスタを起動するたびに、ネットワークカードの再バインド、IPの...
目次概要1. 必要なソフトウェア環境を開発する1) VSコードのインストール2) ノード開発環境をイ...
Microsoft は後からブラウザの研究開発に力を入れてきましたが、実際のところ、最新の IE ブ...
その後、VSC で Jupyter Notebook を使用する方法も追加しました...アナコンダを...
原文: http://www.planabc.net/2008/08/05/userdata_beh...
1. スクロールスナップはフロントエンド開発者にとって必須のスキルですCSS スクロール スナップは...
この記事では、例を使用して、MySQL ストアド プロシージャを作成 (CREATE PROCEDU...