06-Nginx配置详解

目录

请求定位

资源访问

修改配置文件

创建目录

创建文件

路径匹配优先级

优先级规则

普通匹配

长路径匹配

正则匹配

A、 区分大小写的正则匹配

B、 不区分大小写的正则匹配 ~后跟上*号,表示这是不区分大小写的正则表达式。

短路匹配

精确匹配

缓存配置

http{}模块的缓存全局定义

A、 proxy_cache_path

B、 proxy_temp_path

location{}模块的缓存局部定义

A、 proxy_cache mycache

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

G、proxy_cache_lock   on

H、proxy_cache_lock_timeout   5s

I、 proxy_cache_valid    5s

J、 proxy_cache_use_stale    http_404 http_500

K、 expires    3m

Nginx 变量

A、 自定义变量

B、 内置变量


请求定位

资源访问

  1. 修改配置文件

  1. 创建目录

在真实目录中,必须要在 root 属性指定的目录下存在 location 指定的 URI 路径目录。所以需要在/opt/aaa 下创建 xxx/ooo 目录。

  1. 创建文件

在/opt/aaa/xxx/ooo 目录下新建一个 myfile.txt 文件,文件内容为:this default page。

再新建一个 hello.txt 文件,文件内容为:hello nginx world

      1. 路径匹配优先级

  1. 优先级规则

优先级由低到高依次是:

普通匹配 < 长路径匹配 < 正则匹配 < 短路匹配 < 精确匹配

  1. 普通匹配

浏览器地址栏中的访问路径均为如下形式,不变。

下面的匹配规则是:只要请求是以/xxx 开头的路径就可命中。

 

  1. 长路径匹配

当一个请求路径既可以与一个长路径相匹配,又可以与一个短路径相匹配时,长路径优先级高。

  1. 正则匹配

在正则匹配与普通匹配(长路径匹配也属于普通匹配)均可匹配上时,正则匹配的优先级高。

A、 区分大小写的正则匹配

~表示这里是正则表达式,默认匹配是区分大小写的。

在长路径匹配与正则匹配间,仍然是正则匹配的优先级要高于长路径匹配的,即使正则匹配的要短于长路径匹配的。


当请求中的 XXX 写为大写字母,会报 404 找到资源。

 

B、 不区分大小写的正则匹配
~后跟上*号,表示这是不区分大小写的正则表达式。

 


当请求中的 XXX 写为大写字母时,依然可以访问。

  1. 短路匹配

以^~开头的匹配路径称为短路匹配,表示只要匹配上,就不再匹配其它的了,即使是正则匹配也不再匹配了。即其优先级要高于正则匹配的。

 

  1. 精确匹配

以等号(=)开头的匹配称为精确匹配,其是优先级最高的匹配。

      1. 缓存配置

Nginx 具有很强大的缓存功能,可以对请求的response 进行缓存,起到类似CDN 的作用, 甚至有比 CDN 更强大的功能。同时,Nginx 缓存还可以用来“数据托底”,即当后台 web 服务

 

器挂掉的时候,Nginx 可以直接将缓存中的托底数据返回给用户。此功能就是 Nginx 实现“服务降级”的体现。

Nginx 缓存功能的配置由两部分构成:全局定义与局部定义。在 http{}模块的全局部分中进行缓存全局定义,在 server{}模块的各个 location{}模块中根据业务需求进行缓存局部定义。

  1. http{}模块的缓存全局定义

A、 proxy_cache_path

用于指定Nginx 缓存的存放路径及相关配置。

B、 proxy_temp_path

指定Nginx 缓存的临时存放目录。若 proxy_cache_path 中的use_temp_path 设置为了off, 则该属性可以不指定。

  1. location{}模块的缓存局部定义

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

为请求的静态资源开启浏览器端的缓存。

  1. Nginx 变量

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,可能和最初的值有不同,比如经过重定向之类的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xianghan收藏册

极简精品作,一分也是一份鼓励哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值