nginxのは4つのフラグをrewrtie
nginxの書き換え命令を使用して、ステアリングはそれぞれ、リダイレクト、永久的な、ブレークと最後、フラグに四つの異なるrewrtieため、URLを達成することができます。最初の二つのフラグの種類をジャンプされ、そのうちの後者の二つは、エージェントのタイプです。ジャンプの種類は、新しいアドレス再要求に対するクライアントのブラウザを持っている意味し、プロキシの種類は、内部Webサーバーでのジャンプを達成することです。
リダイレクト:302をバックrewrtieアドレスにジャンプします。
永久:301バックrewrtieアドレスへの永久的な調整、現在のアドレスは永久にやさしいエンジンを検索するために、通常、新しいアドレスに移動されました。
最後:実行するサーバーのアドレスは、再びラベルを書き換えます。
ブレイク:アドレス書き換えた後、現在の場所のラベルに再実行。
Proxy_passルートまたは指定されたソースを使用して、最後に、ブレークすることができ、その結果は、後の実施例で、異なっていてもよい;別名ソースを指定するために使用され、最後でなければなりません。次のような構成の場合:
location / {
root /var/www/html;
index index.html index.htm;
rewrite "/x/t.html" /y/t.html break;
}
location /y/ {
root /var/www/html/other;
}
/x/t.html、リライトルールコンプライアンス要求された場合、その調整がBREAKを使用して、フラグので、/y/t.htmlに対して行われるようにアドレスをので、「/位置」に/ VARの結果をジャンプ/www/html/y/t.html。最後のためのフラグが、その後、/y/t.htmlサーバー]タブ、「場所/ yと/」、再実行されます場合は、ジャンプが今回ので、「場所/ Y /」ためのラベルに再割り当てられていたので、結果は/var/www/html/other/y/t.html。
注:間違って設定されている場合の使用最後、あなたは無限ループを引き起こす可能性があります。例えば:
location /x/ {
proxy_pass http://my_proxy;
rewrite "^/x/(.*)\.html$" /x/1.html last;
}
重版は記事のソースを明記してください、ありがとうございました!:より転載http://www.netingcn.com/nginx-rewrite-flag.html
nginxの中の最後の、休憩、恒久的なリダイレクト
1.最後の和ブレーク
- 場所の外
ときに、最後のときブレーク位置の外側に発生する、両方の効果は同じなし差です。彼らは自分のマッチング場所を選択し、その書き換えモジュールのコマンドの後にすべてをスキップするという事実に注意。
Example:
rewrite url1 url2 last; ①
rewrite url3 url4 last; ②
rewrite url5 url6 last; ③
location ~ url2 ④
location ~ url4 ⑤
location ~ url6 ⑥
この書き換えルールが離れて直接場所の選択の背後にスキップされた判断を、ではありませんその背後に効果①、②及び③を取るときは、疑問がある場合があり、それらの指示入力書き換えモジュールコマンドそれですか?nginxの自分自身を使用している場合は、クエリの公式ウェブサイトに行かなければなりません。あなたがtengineを使用している場合しかし、あなたはtengine -Vを使用することができます。あなたが望むだろう情報が記載されています。
- 内の場所
ときに、最後の休憩と場所の内側に存在する場合には、2つの違いはあります。
最後:使用最後のコマンドは、再びの動作再開だけという、書き換えの場所の範囲の後にジャンプします
使用breakコマンドは、書き換え後の位置の範囲を飛び出しません:休憩を。また、この人生の最後の場所です。
Example:
rewrite xxx1 yyy last; ⑦
rewrite xxx2 yyy last; ⑧
rewrite xxx3 yyy last; ⑨
rewrite xxx4 yyy last; ⑩
location ~ url1
{
rewrite url1 url2 last; ①
}
location ~ url2
{
rewrite url3 url4 break; ②
fastcgi_pass 127.0.0.1:9000;
}
これらの例は:
書換指示処理の第1の位置が完了した後、位置をポップアップ表示されます、そして次に再決定リライトは7~9規則、
ロケーション処理における第書換指示が完了した後、再ために、場所をしないジャンプしないであろうルールを分析する〜9 7を書き換えます。しかし、唯一のfastcgi_pass命令の裏などproxy_passに情報を渡すために
2.永久リダイレクト
永久:永続的なリダイレクト。ログイン要求ステータスコード301
リダイレクト:一時的なリダイレクト。ログイン要求ステータスコード302
観点から、機能の実現を見永久およびそれをリダイレクトします。何もパフォーマンスの問題が存在し、悪いは良い、がない場合。(ときやBaiduはあなたのサイトをクロール)が、SEO。このような何かが、あなたは最終的に関心の永続的または一時的なリダイレクトリダイレクトされます。理解できない、で、深さ、それをグーグルが必要です。
永久、リダイレクトVS 3.最後に、ブレーク
ステータスコード301と302と永久リダイレクトを指し、アクセスログの要求ステータスコード200に対する最後の破断
キーワードのこれらの2つのタイプ、目には、私たちが見ることができるどのような違いでしょうか?私はあなたにそれの例を挙げてみましょう:
Webページを開いて、デバッグモードを開くと、行動301及び例302を見つけます。最初の要求301または302の後、ブラウザは新しいURLを再取得し、その後、新しいURLは、再訪問します。あなたは永久的なリダイレクトを設定しているときに、サーバー上の土地にURLリクエストを訪れるの少なくとも2倍です。
あなたが最後またはブレークを設定すると、あなたが最終URLを確定した後に、このURLをブラウザに返されることはありませんが、それはに対処するためfastcgi_passまたはproxy_pass指示を投げました。URLを要求し、その数はサーバー時間に1に低下しました。
重版は記事のソースを明記してください、ありがとうございました!転送:http://blog.51cto.com/unixman/1711943