NFgix設定URL再書き込み
6723 ワード
URLリピートとは、ウェブサイトのURLにある状態を達成するためにconfファイルを構成することによって、よくある擬似静的、301リダイレクト、ブラウザ指向などのルールに方向付け/ジャンプすることをいう。Ngixは、正則表現を用いてURIを書き換えることができ、関連変数に応じて異なる構成をリダイレクトして選択することができます。このコマンドがServerセグメントで指定されている場合、要求されたlocationが決定される前に実行され、命令実行後に選択されたlocationに他の書き換えルールがある場合、それらも実行される。このコマンドをlocationで実行すると、新しいURIが生成され、またlocationで新しいURIが決定される。このようなループは最大10回まで実行でき、それを超えると500エラーに戻ります。
rewrite規則:マッチングしたいターゲットurl を文字列または正規表現することができる。方向性経路:規則に適合した後に方向付けされるべき経路を示し、規則に正則がある場合は、肯定則内の獲得パケット を示すためにドルindexを使用することができる。書き換えタイプ: last:Apphe里徳(L)マークに相当し、rewriteが完了したことを示し、ブラウザアドレスバーURLアドレスが変更されない。 break:このルールのマッチングが完了したら、マッチングが終了し、後のルールに一致しなくなります。ブラウザアドレスバーのURLはそのままです。 redirect:302に戻ると、一時的にリダイレクトされ、ブラウザのアドレスにジャンプ後のURLアドレスが表示されます。 return
例1 lastは普通serverとifに書いていますが、breakは普通locationで を使います。 lastは書き換え後のurlマッチングを終了しません。つまり、新しいurlはserverからマッチングフローをもう一度歩きます。breakは書き直した後のマッチング と一致します。 breakとlastは、後続のrewrite命令 を実行し続けることができます。 locationでbreakに戻ると、その後のマッチングlocation が直接に有効になり、停止される。リダイレクトが相対的(ホスト名の部分がない)である場合、nginxはリダイレクト中にマッチングserver_を使用する。nameコマンド if判断式が変数である場合、値が空である場合や0で始まる文字列はfalse として扱われます。変数と内容を直接比較する場合、===~正規表現にマッチします。~*大文字と小文字のマッチングは区別されません。大文字と小文字の区別が内蔵の条件に合わないと判断しました。 -fと!-fは、ファイルがあるかどうかを判断するために使用される 。-dと!-dディレクトリがあるかどうかを判断するために使用される 。-eと!-eファイルまたはディレクトリが存在するかどうかを判断するために使用される 。-xと!-xファイルが実行可能かどうかを判断するために使用される 。
セット
内蔵グローバル変数
rewrite
server {
rewrite ;
}
return code
return命令は、構成文の実行を終了し、クライアントの状態コードに戻るために、以下の値を使用することができます。204、400、402-406、408、410、411、413、416、500-514。デフォルトはNoneに戻ります。さらに、非標準コード444は、接続をオフにし、任意のヘッダを送信しないであろう。301と302は単に状態コードだけを返すことができないので、リダイレクトURLが必要です。returnコマンドは301,302に戻ることができません。例1
server {
listen 8899;
server_name localhost;
root /Users/bowen/python/pages;
# test1.html , last.html ,
rewrite /test1.html /last.html last;
# test2.html , break.html ,
rewrite /test2.html /break.html break;
# test3.html , 302 ,
rewrite /test3.html /redirect.html redirect;
# test4.html , 301 ,
rewrite /test4.html /permanent.html permanent;
location / {
# last , 400
rewrite /last/ /400.html last;
# break ,
rewrite /break/ /400.html break;
}
location = /400.html {
return 400;
}
}
lastとbreakの違いif ( ) {
}
セット
set
setで新しい変数を定義しますが、set設定は使えません。xxxヘッダ変数の値。内蔵グローバル変数
$args : , $query_string
$content_length : Content-length 。
$content_type : Content-Type 。
$document_root : root 。
$host : , 。
$http_user_agent : agent
$http_cookie : cookie
$limit_rate : 。
$request_method : , GET POST。
$remote_addr : IP 。
$remote_port : 。
$remote_user : Auth Basic Module 。
$request_filename : , root alias URI 。
$scheme : HTTP ( http,https)。
$server_protocol : , HTTP/1.0 HTTP/1.1。
$server_addr : , 。
$server_name : 。
$server_port : 。
$request_uri : URI, , :”/foo/bar.php?arg=baz”。
$uri : URI,$uri , ”/foo/bar.html”。
$document_uri : $uri 。
例2 location = /test_if.html {
# test
set $name test;
# URL
# name=xx,
if ($args ~* name=(\w+?)(&|$)) {
set $name $1;
}
# 301
rewrite ^ /$name.html permanent;
}
上に配置されたアクセス状況:-/test_ifh.=>/test.-/test_ifh.name=ok=>/ok.html?name=ok