1. 正規表現マッチング
2. ファイルとディレクトリのマッチング
三つ。書き換えコマンドの最後のパラメータはフラグタグであり、
ブラウザのアドレスバーを変更せずに URI を書き換えるには、last と break を使用します。 2 つには微妙な違いがあります。alias ディレクティブを使用する場合は、最後のマーカーを使用する必要があります。proxy_pass ディレクティブを使用する場合は、break マーカーを使用する必要があります。この書き換えルールの実行後、最後のタグはそれが配置されている server{......} タグへのリクエストを再開し、break タグはこのルールのマッチングが完了した後にマッチングを終了します。 たとえば、 「/photo/([0-9]{2})([0-9]{2})([0-9]{2})」を書き換える 「/path/to/photo/$1/$1$2/$1$2$3.png」を書き換えます。 4. NginxRewriteルール関連の手順 1. ブレーク命令 使用環境: サーバー、場所、場合 2. if命令 使用環境: サーバー、場所 3. 返品指示 構文: 戻りコード 場所 ~ .*\.(sh|bash)?$ { 403 を返します。 } 4. 書き換えディレクティブ 構文: $host が ~* www\.(.*) の場合 { $host_without_www を $1 に設定します。 ^(.*)$ http://$host_without_www$1permanent を書き換えます。 } 5. コマンドの設定 構文: setvariable value; $varname に「hello world」を設定します。 6. Uninitialized_variable_warn ディレクティブ 構文: uninitialized_variable_warnon|off 五。 Nginx Rewriteルールの記述例 1. アクセスしたファイルまたはディレクトリが存在しない場合は、HTMLファイルにリダイレクトします。 if( !-e $リクエストファイル名 ) { ^/(.*)$ index.htmllast を書き換えます。 } 2. ディレクトリスワップ /123456/xxxx ====> /xxxx?id=123456 ^/(\d+)/(.+)/ /$2?id=$1 を最後に書き換えます。 3. クライアントがIEブラウザを使用している場合は、/ieディレクトリにリダイレクトします。 if($http_user_agent ~ MSIE) { 書き換え^(.*)$ /ie/$1 break; } 4. 複数のディレクトリへのアクセスを禁止する 場所 ~ ^/(cron|テンプレート)/ { すべてを否定する; 壊す; } 5. /dataで始まるファイルへのアクセスを禁止する 場所 ~ ^/データ { すべてを否定する; } 6. 拡張子が.sh、.flv、.mp3のファイルへのアクセスを禁止する 場所 ~ .*\.(sh|flv|mp3)$ { 403 を返します。 } 7. 特定の種類のファイルのブラウザキャッシュ時間を設定する 場所 ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { 有効期限は30日です。 } 場所 ~ .*\.(js|css)$ { 1時間で期限切れになります。 } 8. favicon.icoとrobots.txtの有効期限を設定する ここでは、favicon.ico は 99 日間、robots.txt は 7 日間、404 エラー ログは記録されません。 場所 ~(favicon.ico) { log_not_found オフ; 有効期限は99日です。 壊す; } 場所 ~(robots.txt) { log_not_found オフ; 有効期限は7日です。 壊す; } 9. ファイルの有効期限を設定します。ここでは600秒に設定されており、アクセスログは記録されません。 場所 ^~ /html/scripts/loadhead_1.js { access_log オフ; ルート /opt/lampp/htdocs/web; 有効期限600; 壊す; } 10. ファイルのホットリンク防止と有効期限の設定 ここでのreturn412はカスタムhttpステータスコードであり、デフォルトは403です。これは正しいホットリンクリクエストを見つけるのに便利です。 書き換え^/ http: //img.linuxidc.net/leech.gif; // リーチ防止画像を表示 access_log off; // 負荷を軽減するためアクセスログを記録しない expires 3d // 3日間の全ファイルのブラウザキャッシュ location ~*^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ { valid_referers なしブロック *.linuxidc.com*.linuxidc.net localhost 208.97.167.194; ($invalid_referer) の場合 { 書き換え^/ upload/2022/web/leech.gif; 412 を返します。 壊す; } access_log オフ; ルート /opt/lampp/htdocs/web; 有効期限は3日です。 壊す; } 11. 固定IPのみウェブサイトへのアクセスを許可し、パスワードを追加する ルート /opt/htdocs/www; 208.97.167.194 を許可します。 222.33.1.2 を許可します。 231.152.49.4 を許可します。 すべてを否定する; auth_basic "C1G_ADMIN"; auth_basic_user_file htpasswd; 12. 複数のディレクトリにあるファイルを1つのファイルに変換してSEO効果を高める
最後に^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.htmlを書き換えます。 13. ファイルとディレクトリが存在しない場合にリダイレクトする: if (!-e $request_filename) { プロキシパス http://127.0.0.1; } 14. ルートディレクトリ内のフォルダを第2レベルのディレクトリにポイントする たとえば、 lastをpermanentに変更すると、ブラウザのアドレスバーに ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last を書き換えます。 上記の例の問題点は、/shanghaiにアクセスしたときに一致しないことです。 ^/([0-9a-z]+)job$ /area/$1/ を最後に書き換えます。 ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last を書き換えます。 この方法では、 たとえば、 次に自動ジャンプを追加しますが、機能しません。 if (-d $リクエストファイル名){ ^/(.*)([^/])$ http://$host/$1$2/permanent を書き換えます。 } 理由が分かれば対処は簡単です。手動でジャンプしてみましょう。 ^/([0-9a-z]+)job$ /$1job/permanent を書き換えます。 ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last を書き換えます。 15. ドメインジャンプ サーバ{ 聞く 80; サーバー名 jump.linuxidc.com; インデックス index.html index.htm index.php; ルート /opt/lampp/htdocs/www; 書き換え^/ http://www.linuxidc.com/; access_log オフ; } 16. マルチドメインリダイレクト サーバー名 www.linuxidc.comwww.linuxidc.net; インデックス index.html index.htm index.php; ルート /opt/lampp/htdocs; $host が "linuxidc\.net" の場合 { 書き換え^(.*) http://www.linuxidc.com$1permanent; } 6. nginx グローバル変数 arg_PARAMETER #この変数には、GET リクエスト内の変数 PARAMETER の値(存在する場合)が含まれます。 args #この変数は、リクエスト ライン (GET リクエスト) 内のパラメータと同じです (例: foo=123&bar=blahblah;)。 binary_remote_addr #バイナリクライアントアドレス。 body_bytes_sent #応答で送信された本文のバイト数。接続が失われた場合でも、このデータは正確です。 content_length #リクエスト ヘッダー内の Content-length フィールド。 content_type #リクエスト ヘッダーの Content-Type フィールド。 cookie_COOKIE #Cookie COOKIE 変数の値 document_root #現在のリクエストのルート ディレクティブで指定された値。 document_uri #uriと同じです。 host #リクエストホストヘッダーフィールド、それ以外の場合はサーバー名。 ホスト名 #gethostname によって返されるマシンのホスト名に設定します http_ヘッダー is_args # args パラメータがある場合、この変数は「?」に等しくなり、そうでない場合は空の値「」に等しくなります。 http_user_agent #クライアントエージェント情報 http_cookie #クライアントクッキー情報 limit_rate #この変数は接続速度を制限できます。 query_string #args と同じです。 request_body_file #クライアントのリクエスト本体情報の一時ファイル名。 request_method #クライアントが要求したアクション。通常は GET または POST です。 remote_addr #クライアントのIPアドレス。 remote_port #クライアントポート。 remote_user #Auth Basic モジュールによって検証されたユーザー名。 request_completion #リクエストが完了した場合は、OK に設定されます。リクエストが完了していない場合、またはリクエストがリクエスト チェーンの最後のものではない場合は、空になります。 request_method #GET または POST request_filename #ルートまたはエイリアス ディレクティブと URI リクエストによって生成された現在のリクエストのファイル パス。 request_uri #ホスト名なしのリクエストパラメータを含む元のURI(例:"/foo/bar.php?arg=baz")。変更できません。 スキーム #HTTP メソッド (http、https など)。 server_protocol #リクエストで使用されるプロトコル。通常は HTTP/1.0 または HTTP/1.1。 server_addr #サーバーアドレス。この値はシステムコールの完了後に決定できます。 server_name #サーバー名。 server_port #リクエストがサーバーに到着するポート番号。 7. ApacheとNginxのルールの対応 ApacheのRewriteCondはNginxのifに相当する たとえば、指定されたドメイン名がこのサイトにアクセスできるようにすると、他のすべてのドメイン名は www.jb51.net にリダイレクトされます。 アパッチ: 書き換え条件 %{HTTP_HOST} !^(.*?)\.aaa\.com$[NC] 書き換え条件 %{HTTP_HOST} !^localhost$ 書き換え条件 %{HTTP_HOST}!^192\.168\.0\.(.*?)$ 書き換えルール ^/(.*)$ //www.jb51.net[R,L] Nginx フィルタリングの例: if( $host ~* ^(.*)\.aaa\.com$ ) { $allowHost を '1' に設定します。 } if($host ~* ^localhost) の場合 { $allowHost を '1' に設定します。 } $host ~* ^192\.168\.1\.(.*?)$ の場合 { $allowHost を '1' に設定します。 } $allowHost !~ '1' の場合 { ^/(.*)$ //www.jb51.netredirect を書き換えます。 } 要約する バックエンド開発は、フルスタックの仕事に最も近い職業です。フロントエンドが不十分な場合は、バックエンドがその上にページのJSを書くことができます。運用と保守がなくても問題ありません。バックエンドがサーバーを維持します。つまり、優れたバックエンドはすべての側面をカバーできます。 Nginx 転送マッチングルールの実装に関するこの記事はこれで終わりです。より関連性の高い Nginx 転送マッチングルールについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: win10にmysql 8.0.18-winx64をインストールする詳細な手順
目次序文やることリストやるだけ地図を準備するインスタンスをバックアップ用に保存するタイマーカルーセル...
目次1. ノードをインストールする2. Commander.jsをインストールする3. JavaSc...
ユーザーエクスペリエンスと使いやすさを向上させるために、入力ボックスなど、Web ページでユーザーが...
LinuxでのMySQL-5.7.19バージョンの初心者向けの最初のインストールについては、前の記事...
目次序文実装のアイデア実装コード成果を達成する序文これは、テーブルを動的に追加する例です。[追加] ...
1. 準備ミドルウェア: Tomcat、Redis、Nginx Jar パッケージ: commons...
本から学ぶことは常に浅はかで、これがさらなるダウンタイムを引き起こすことには決して気づきません......
この記事では、Linuxサーバー上でDockerを使用してNexusプライベートサーバーを構築する方...
<br /> 特定の Web サイトを閲覧して、優れた Web ページを見つけた場合、そ...
事前に言っておくDocker を使用すると非常にシンプルなデプロイメント環境を実現できることは誰もが...
1: <a> タグを使用してページにリンクする場合、target 属性の役割は誰もが知っ...
この記事では、例を使用して MySQL 変数の使用方法を説明します。ご参考までに、詳細は以下の通りで...
この記事では、Docker+Jenkins の自動ビルドデプロイメントを紹介し、皆さんと共有します。...
VueとネイティブJavaScriptカプセル化に基づいて、プルダウンリフレッシュとプルアップロード...
目次説明する:要約する補充するDOM を直接変更して操作する js や jQuery とは異なり、V...