nginxの設定レコード

基本的な使用

文法規則: location [=|~|~*|^~] /uri/ { … }

  • = これは、完全一致の始まりを表し、
  • ^~URIは、従来から始まる文字列の先頭を表し、一致URLパスとして理解されます。リクエストが20%/ AA / /静的なものであるので、urlは、マッチした定期^〜/静的/ / AA(スペースに注意)nginxのコーディングかもしれません。
  • ~ これは、通常の大文字と小文字を区別しないマッチの始まりを表し、
  • ~* これは、大文字と小文字を区別しない正規の試合の始まりを表し、
  • !~そして、!~*大文字と小文字が区別され、大文字と小文字を区別しないマッチは定期的に一致していませんされていません
  • / 一般的な一致は、任意の要求が一致しています。

複数の場所の構成の場合の照合順序(からの参照、まだ実際の検証、知っしようと、ない厳格に参考のために、スティック):

^〜、順番に正の一致するファイルによって、最終的には/一般的な一致に続く一致が続く最初の試合=、。マッチング停止したとき、一致の成功があった場合、現在のルールによる処理要求が一致しました。
ここでは例です

location = / {
   #规则A
}
location = /login {
   #规则B
}
location ^~ /static/ {
   #规则C
}
location ~ \.(gif|jpg|png|js|css)$ {
   #规则D
}
location ~* \.png$ {
   #规则E
}
location !~ \.xhtml$ {
   #规则F
}
location !~* \.xhtml$ {
   #规则G
}
location / {
   #规则H
}

以下のような効果があります。


访问根目录/, 比如http://localhost/ 将匹配规则A

访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H

访问 http://localhost/static/a.html 将匹配规则C

访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用, 而 http://localhost/static/c.png 则优先匹配到 规则C

访问 http://localhost/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。

访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。

访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

実際の使用には、3つのルールを設定することができます

#直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。
#这里是直接转发给后端应用服务器了,也可以是一个静态首页
# 第一个必选规则
location = / {
    proxy_pass http://tomcat:8080/index
}

# 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {
    root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/;
}

#第三个规则就是通用规则,用来转发动态请求到后端应用服务器
#非静态文件请求就默认是动态请求,自己根据实际把握
#毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了

location / {
    proxy_pass http://tomcat:8080/
}

その他の文法

書き換え文法

last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301
  • 次の式は、決定するために使用することができます。
`-f`和`!-f`用来判断是否存在文件
`-d`和`!-d`用来判断是否存在目录
`-e`和`!-e`用来判断是否存在文件或目录
`-x`和`!-x`用来判断文件是否可执行
  • グローバル変数が判断されるように以下のものを用いてもよいです

例:のhttp:// localhostを:88 / TEST1 / TEST2 / test.phpを

$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:\nginx/html
$request_filename:D:\nginx/html/test1/test2/test.php

文法をリダイレクト

server {
    listen 80;
    server_name start.igrow.cn;
    index index.html index.php;
    root html;
    if ($http_host !~ "^star\.igrow\.cn$" {
        rewrite ^(.*) http://star.igrow.cn$1 redirect;
    }
}

ホットリンク保護

location ~* \.(gif|jpg|swf)$ {
    valid_referers none blocked start.igrow.cn sta.igrow.cn;
    if ($invalid_referer) {
        rewrite ^/ http://$host/logo.png;
    }
}

ファイルの種類に応じて、有効期限を設定します

location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
    if (-f $request_filename) {
        expires 1h;
        break;
    }
}

ディレクトリへのアクセスを禁止します

location ~* \.(txt|doc)${
root /data/www/wwwroot/linuxtone/test;
deny all;
}

使用可能なグローバル変数の一部

$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query

おすすめ

転載: www.cnblogs.com/kai-kai/p/11519518.html