目录
B、 不区分大小写的正则匹配 ~后跟上*号,表示这是不区分大小写的正则表达式。
B、 proxy_cache_key $host$request_uri$arg_age
C、 proxy_cache_bypass $arg_age
D、proxy_cache_methods GET HEAD
E、 proxy_no_cache $aaa $bbb $ccc
F、 proxy_cache_purge $ddd $eee $fff
J、 proxy_cache_use_stale http_404 http_500
请求定位
资源访问
-
修改配置文件
-
创建目录
在真实目录中,必须要在 root 属性指定的目录下存在 location 指定的 URI 路径目录。所以需要在/opt/aaa 下创建 xxx/ooo 目录。
在/opt/aaa/xxx/ooo 目录下新建一个 myfile.txt 文件,文件内容为:this default page。
再新建一个 hello.txt 文件,文件内容为:hello nginx world
优先级由低到高依次是:
普通匹配 < 长路径匹配 < 正则匹配 < 短路匹配 < 精确匹配
浏览器地址栏中的访问路径均为如下形式,不变。
下面的匹配规则是:只要请求是以/xxx 开头的路径就可命中。
当一个请求路径既可以与一个长路径相匹配,又可以与一个短路径相匹配时,长路径优先级高。
在正则匹配与普通匹配(长路径匹配也属于普通匹配)均可匹配上时,正则匹配的优先级高。
A、 区分大小写的正则匹配
~表示这里是正则表达式,默认匹配是区分大小写的。
在长路径匹配与正则匹配间,仍然是正则匹配的优先级要高于长路径匹配的,即使正则匹配的要短于长路径匹配的。
以等号(=)开头的匹配称为精确匹配,其是优先级最高的匹配。
Nginx 具有很强大的缓存功能,可以对请求的response 进行缓存,起到类似CDN 的作用, 甚至有比 CDN 更强大的功能。同时,Nginx 缓存还可以用来“数据托底”,即当后台 web 服务
器挂掉的时候,Nginx 可以直接将缓存中的托底数据返回给用户。此功能就是 Nginx 实现“服务降级”的体现。
Nginx 缓存功能的配置由两部分构成:全局定义与局部定义。在 http{}模块的全局部分中进行缓存全局定义,在 server{}模块的各个 location{}模块中根据业务需求进行缓存局部定义。
A、 proxy_cache_path
用于指定Nginx 缓存的存放路径及相关配置。
B、 proxy_temp_path
指定Nginx 缓存的临时存放目录。若 proxy_cache_path 中的use_temp_path 设置为了off, 则该属性可以不指定。
A、 proxy_cache mycache
指定用于存放缓存 key 内存区域名称。其值为 http{}模块中 proxy_cache_path 中的
keys_zone 的值。
B、 proxy_cache_key $host$request_uri$arg_age
指定Nginx 生成的缓存的key 的组成。
C、 proxy_cache_bypass $arg_age
指定是否越过缓存。
D、proxy_cache_methods GET HEAD
指定客户端请求的哪些提交方法将被缓存,默认为 GET 与HEAD,但不缓存 POST。
E、 proxy_no_cache $aaa $bbb $ccc
指定对本次请求是否不做缓存。只要有一个不为 0,就不对该请求结果缓存。
F、 proxy_cache_purge $ddd $eee $fff
指定是否清除缓存 key。
G、proxy_cache_lock on
指定是否采用互斥方式回源。
H、proxy_cache_lock_timeout 5s
指定再次生成回源互斥锁的时限。
I、 proxy_cache_valid 5s
对指定的 HTTP 状态码的响应数据进行缓存,并指定缓存时间。默认指定的状态码为
200,301,302。
J、 proxy_cache_use_stale http_404 http_500
设置启用托底缓存的条件。而一旦这里指定了相应的状态码,则前面 proxy_cache_calid
中指定的相应状态码所生成的缓存就变为了“托底缓存”。
K、 expires 3m
为请求的静态资源开启浏览器端的缓存。
A、 自定义变量
由于Nginx 配置文件是 perl 脚本,所以其是可以使用如下方式自定义变量的。
B、 内置变量
Nginx 中已经内置定义了很多变量,这些变量的意义如下:
$args $binary_remote_addr $body_bytes_sent $content_length $content_type $document_root $document_uri $host 的服务器名; $http_cookie $http_referer $http_user_agent $http_via $http_x_forwarded_for $limit_rate $remote_addr $remote_port $remote_user $request |
请求中的参数; 远程地址的二进制表示已发送的消息体字节数 HTTP 请求信息里的"Content-Length" 请求信息里的"Content-Type" 针对当前请求的根路径设置值与$uri 相同 请求信息中的"Host",如果请求中没有 Host 行,则等于设置 |
cookie 信息 来源地址 客户端代理信息 最后一个访问服务器的 Ip 地址相当于网络访问路径。 对连接速率的限制客户端地址 客户端端口号 客户端用户名,认证用用户请求信息 |
$request_body $request_body_file $request_filename $request_method $request_uri $server_addr |
用户请求主体 发往后端的本地文件名称当前请求的文件路径名 请求的方法,比如"GET"、"POST"等请求的 URI,带参数 服务器地址,如果没有用 listen 指明服务器地址,使用这个变 |
量将发起一次系统调用以取得地址(造成资源浪费) $server_name 请求到达的服务器名 $server_port 请求到达的服务器端口号 $server_protocol 请求的协议版本,"HTTP/1.0"或"HTTP/1.1" $uri 请求的 URI,可能和最初的值有不同,比如经过重定向之类的 |