この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
その他の技術
›
サーバー構成
›
Nginxの書き換えルールの例が挙げられます
眺める:
11719
|
答える:
1
[ウェブ]
Nginxの書き換えルールの例が挙げられます
[リンクをコピー]
管理者
掲載地 2014/12/05 22:45:25
|
|
|
1。 正則表現一致、ここで:
* ~ は大文字に応じたマッチングです
* ~* は大文字に異なるマッチです
* !~ と !~* はそれぞれ大文字を区別するミスマッチとインセンシティブなミスマッチです
2。 ファイルとディレクトリの一致、ここで:
* -f と !-f はファイルの存在を判定するために使われます
* -d と !-d はディレクトリが存在するかどうかを判定するために使われます
* -e と !-e はファイルやディレクトリが存在するかどうかを判定するために使われます
* -xと!-xはファイルが実行可能かどうかを判定するために使われます
3. 書き換え命令の最後のパラメータはフラグマークで、以下で示されます:
1.lastはアパッチ語の[L]マークに相当し、書き換えを意味します。
2. ブレイク このルールのマッチングが完了するとマッチングは終了し、その後のルールはマッチングされなくなります。
3.redirectは302の一時的なリダイレクトを返し、ブラウザアドレスはジャンプ後にURLアドレスを表示します。
4.永久返却 301 永久リダイレクトの場合、ブラウザアドレスはジャンプ後にURLアドレスを表示します。
lastとbreakを使ってURIの書き換えを実装し、ブラウザアドレスバーは変更されません。 そして両者にはわずかな違いがあり、エイリアスコマンドの使用は最後に付ける必要があります。 proxy_pass指示を使う場合は、breakタグを使う必要があります。 この書き換えルールで最後のタグが実行されると、それはサーバー{......}に表示されますタグはリクエストを再開始し、break タグはルールマッチが完了した後にマッチを終了します。
例えば、/photo/123456のようなURLを/path/to/photo/12/1234/123456.png
書き直す "/photo/([0-9]{2})([0-9]{2})([0-9]{2})"/path/to/photo/$1/$1$2/$1$2$3.png ;
4。 NginxRewrite ルール
1. ブレイクコマンド
使用環境:サーバー、場所、if;
この指令は現在のルールセットを完成させ、リライト指令を処理しなくなります。
2. もし指示の場合
使用環境:サーバー、所在地
この命令は条件が満たされているかどうかを確認し、満たされた場合はカール括弧内で文を実行します。 Ifコマンドはネストをサポートしておらず、複数の条件 && および || もサポートしません。治療。
3. コマンドを返す
構文:returncode ;
使用環境:サーバー、場所、if;
この命令はルールの実行を終了し、クライアントにステータスコードを返すために使われます。
例:訪問URLが「.sh」または「.bash」で終わると、403ステータスコードが返されます
場所 ~ .*\。 (叩きのめす)?$
{
リターン403;
}
4. 書き換えコマンド
構文:rewriteregex 置換フラグ
使用環境:サーバー、場所、もし
この指令は式に基づいてURIをリダイレクトしたり、文字列を修正したりします。 命令は設定ファイルの順序に従って実行されます。 式の書き換えは相対経路にのみ有効であることに注意してください。 ホスト名をペアリングしたい場合は、例えば以下のif文を使うべきです。
もし( $host ~* www\( *) )
{
セット$host_without_www $1;
リライト ^(.*)$ http://$host_without_www$1permanent;
}
5. コマンドを設定する
構文:setvariable value; デフォルト:なし; 使用環境:サーバー、場所、if;
この指令は変数を定義し、それに値を割り当てるために使われます。 変数の値はテキスト、変数、またはテキスト変数の和集合のいずれかです。
例:set$varname 「こんにちは世界」;
6.Uninitialized_variable_warn 指示
構文論:取uninitialized_variable_warnon
使用環境:http、サーバー、位置情報、もし
このコマンドは、初期化されていない変数の警告メッセージのオン・オフを切り替えるために使われ、デフォルト値はOnです。
5。 Nginx Rewrite ルール作成の例
1. アクセスしたファイルとディレクトリが存在しない場合、特定のPHPファイルにリダイレクトします
if( !-e $request_filename )
{
書き直す ^/(.*)$ index.php 最後;
}
2. ディレクトリ交換 /123456/xxxx ====> /xxxx?id=123456
rewrite ^/(\d+)/(.+)/ /$2?id=$1 Last
3. クライアントがIEブラウザを使用している場合、/ieディレクトリにリダイレクトされます
if( $http_user_agent ~ MSIE)
{
rewrite ^(.*)$ /ie/$1 ブレイク;
}
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で、正しいホットリンクリクエストを見つけるのに便利です
「書き直す ^/
; 「アンチホットリンクの画像が表示されます
「access_logて行け」 アクセスログは記録されず、ストレスが軽減されます
「3Dの期限切れ」すべてのファイルのブラウザキャッシュが3日間分
場所 ~*^.+\。 (jpg|jpeg|gif|png|swf|rar|zip|CSS|js)$ {
valid_referers ブロックなし *.xx.com*.xx.net localhost 208.97.167.194;
もし($invalid_referer) {
書き直し^/
;
リターン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-123-456-789.html 指向/job/123/456/789.html
rewrite^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html last;
13. ファイルやディレクトリが存在しない場合のリダイレクト:
もし(!-e $request_filename) {
proxy_pass http://127.0.0.1;
}
14. ルートディレクトリ内のフォルダをレベル2のディレクトリに指す
例えば、/shanghaijob/ は /area/shanghai/ を指しています
最後のアドレスバーを永続的に変えると、ブラウザのアドレスバーは /location/shanghai/ になります。
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
上記の例の問題は、/shanghaiにアクセスするとマッチしないことです
rewrite ^/([0-9a-z]+)job$ /area/$1/ Last ;
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
この方法/上海もアクセス可能ですが、ページの関連リンクは利用できません。
./list_1.htmlの実際のアドレスが/area/shanghia/list_1.html は/list_1.htmlになり、アクセス不能になります。
それなら自動ジャンプを追加できません
(-d $request_filename)は実のディレクトリである必要があるという条件があり、私の書き換えはそうではないため、効果はありません
もし (-d $request_filename){
リライト ^/(.*)([^/])$ http://$host/$1$2/permanent;
}
理由が分かれば簡単にできます。手動でジャンプさせてください
rewrite ^/([0-9a-z]+)job$ /$1job/permanent;
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last;
15. ドメイン名ジャンプ
サーバー
{
80;
server_name jump.linuxidc.com;
インデックスindex.html index.htm index.php;
ルート /opt/lampp/htdocs/www;
リライト ^/ http://www.xx.com/;
access_logい、
}
16. 多領域旋回
server_name www.xx.comwww.xx.com;
インデックスindex.html index.htm index.php;
ルート /opt/lampp/htdocs;
if ($host ~ "LinuxIDC\.NET") {
リライト ^(.*) http://www.xx.com$1permanent;
}
6. nginxグローバル変数
arg_PARAMETER #这个变量包含GET请求中、変数パラメータが存在する場合に
args #这个变量等于请求行中 (GET request) パラメータ、例:foo=123&bar=blahblah;
binary_remote_addr #二进制的客户地址。
body_bytes_sent #响应时送出的body字节数数量。 このデータは接続が途切れても正確です。
content_length #请求头中的Content長フィールド。
content_type #请求头中的Content型フィールド。
cookie_COOKIE #cookie COOKIE変数の値
document_root #当前请求在root指令中指定的值。
document_uri #与uri相同。
ホスト #请求主机头字段、それ以外のサーバー名は使います。
ホストネームはgethostnameによって返されるthemachineのホスト名に代 #Set
http_HEADER
is_args #如果有args参数、この変数は「?」と等しく、そうでなければ「」というヌル値に等しい。
http_user_agent #客户端agent信息
http_cookie #客户端cookie信息
limit_rate #这个变量可以限制连接速率。
query_string #与args相同。
request_body_file #客户端请求主体信息的临时文件名。
request_method #客户端请求的动作、たいていはGETかPOSTです。
remote_addr #客户端的IP地址。
remote_port #客户端的端口。
remote_user #已经经过Auth ユーザー名はBasic Moduleによって検証済みです。
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。 アパッチとNginxルールの対応
ApacheのRewriteCondはNginxの条件に対応します。
ApacheのRewriteRuleはNginxのリライトに対応しています
Apacheの[R]はNginxのリダイレクトに対応します
アパッチ語の[P]はNginx語で最後(L)に相当します
アパッチ語の[R,L]はNginxのリダイレクトに対応します
アパッチ語の[P,L]はNginxの最後の語に対応しています
アパッチ語の[PT,L]はNginxの最後の語に対応しています
例えば、指定されたドメイン名がこのサイトにアクセスし、他のドメイン名 www.xx.com 必ず切り替える
アパッチ:
RewriteCond %{HTTP_HOST} !^(.*?)\.aaa\.com$[NC]
RewriteCond %{HTTP_HOST} !^localhost$
RewriteCond %{HTTP_HOST}!^192\.168\.0\. (.*?)$
RewriteRule ^/(.*)$ http://www.xx.com[R,L]
Nginx:
if( $host ~* ^(.*)\.aaa\.com$ )
{
「1」$allowHost設定;
}
if( $host ~* ^localhost )
{
「1」$allowHost設定;
}
if( $host ~* ^192\.168\.1\( *?)$ )
{
「1」$allowHost設定;
}
if( $allowHost !~ '1' )
{
書き直す ^/(.*)$ http://www.xx.comredirect ;
}
先の:
新浪微博はコードをスキャンして1セント支払い、2015元までの年末ボーナスを受け取る
次に:
CMD5がWindowsシステム管理者パスワードを解読
関連記事
•
最近のChromeブラウザのネット::ERR_CERT_AUTHORITY_INVALIDの問題
•
JavaScriptは現在の場所のタイムゾーン名とタイムゾーン値を取得します
•
NPMパッケージをブラウザ対応のJavaScriptスクリプトにコンパイルします
•
Windows EdgeブラウザがIEでクラッシュソリューションを開く
•
ChromeブラウザはウェブサイトのjsやCSSのソースコードを修正します
•
[WebView2] (4) WebとWinFormは関数メソッドを互いに呼び出します
•
WebView2 (3) WebとWinFormアプリケーション間の双方向通信
•
[WebView2] (2) WinFormがWebView2を導入し、ウェブコンテンツを表示
•
[WebView2] (1) Microsoft Edge WebView2技術の初期導入
•
Chrome:Google Chromeはメッセージの通知を配信解除します
試験
掲載地 2014/12/07 17:25:05
|
読んで返信することは美徳です
閲覧したセクション
Windows/Linux
技術チャット
ごみ箱
その他の番組編成
HTML/CSS/JavaScript
安全な攻防
UIデザイン
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com