nginx的location与rewrite作用与用法

location匹配uri

location匹配的规则和优先级,重点

nginx常用的变量,这个要求掌握

rewrite:重定向功能,掌握,理解

location匹配:

正则表达式:

元字符:

.:任意单个字符,包括汉字 \ .

^:起始位置

$:结束位置

*:匹配前面的字符0次或多次

+:匹配前面的字符一次或多次

?:一次或0次

\:转义符

[0-9A-Za-z]:匹配0-9,A-Z,a-z

[a]:只能匹配a

{n}:连续重复出现几次

{n,m}:最少出现几次,最多几次

():分组

|:逻辑或

正则表达式:匹配的是文件的内容

URI:统一资源标识符,是一种字符串标识,用于标识抽象的或者物理资源

文件 图片 视频

nginx当中:uri

www.ky30.com/images/1.jpg

location就是用来匹配uri的:

1、精确匹配:location=/{…}

2、正则匹配:location~/{…}

3、一般匹配:location / {…}

匹配的规则:

=:精确匹配,完全匹配,错一个字都匹配不到,必须完全一致

^~:匹配普通字符,匹配前缀

~:区分大小写的匹配

~*:不区分大小写匹配

!~:区分大小写的匹配,取的逻辑非,取反

!~*:不区分大小写的取反

nginx解释:官网:Module ngx_http_core_module

nginx的location与rewrite作用与用法_第1张图片

 

location越精确越匹配(优先级越高)

nginx的location与rewrite作用与用法_第2张图片

 

选b

匹配的优先级:

越精确,优先级越高 = 精确匹配优先级最高 ~正则次之 /通用最低

优先级: location = > location ^~ > location /test/ > location/ 一旦匹配到了之后,不在向下匹配

生产中location匹配规则: 1、location = / {} 直接匹配根网站,通过域名访问网站首页是最多的,使用精确匹配,可以加快处理速度,首页

2、第二个规则: location ^~ /static/ {} 处理静态文件的请求,目录匹配

3、location ~ * .(gif | jpg | png | css) 匹配图片用的

4、通用规则 location /{

proxy_pass 指定代理,反向代理,转发动态请求。.php .jpg 的请求,发到后端

}

location /test/{

}

rewrite:重写,重定向

rewrite使用nginx的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url的重定向

rewrite执行顺序:

1、执行server块当中的rewrite的 2、执行location匹配 3、如果location当中还有rewrite,继续执行。 不停rewrite,死循环,只能10次,然后报错,500.

rewrtie的语法 rewrite < regex > < repTacemnet > [flag] rewrite :开始重定向 regex: 正则匹配的规则 replacemnet: 表示跳转后的内容,你要重定向的url flag:标志位: permanent:永久重定向: 返回码301 redirect:临时重定向,显示的返回码: 302

永久重定向: 301,永久性的变更url,搜索引擎会转移他的权重以及排名到新的URL 临时重定向: 302,用于短期变更(网站维护,或者升级更新),搜索引擎是不会转移权重和排名到新的url 304表示获取的是缓存

break:是重定向,但是不会改变url,而且只会请求一次。跳出当前匹配,即可终止. ast:本条负责匹配完成后,继续向下匹配,只要有last,就继续匹配。配置的时候需要注意,防止死循环rewrite or internal redirection cycle while processing #写成死循环,一直在匹配location,10次,返回码500.

location -*.(jpglpng)$ rewrite /.gif ^test$ ^//www.kgc.com$ 基于域名的跳转 www.kgc.com------www.benet.com 基于ip地址的跳转:页面维护,升级 192.168.233.61能够访问,其他用户都是显示维护

x_forwarded_for:用于获取HTTP请求头中的X-Forwarded-For字段的值。 X-Forwarded-For是一个常见的HTTP请求头,通常由代理服务器添加,用于指示原始客户端的IP地址。 proxy_set_header X-Forwarded-For $remote_addr; 这个是传给后端。

X-Real-IP:头部为客户端真实IP地址 proxy_set_header X-Real-IP $remote_addr; proxy_set_header指令来设置X-Real-IP头部的值为$remote_addr,即客户端的真实IP地址。 这样,Nginx会将客户端的真实IP地址作为X-Real-IP头部的值传递给后端服务器。

default_type text /plain; 表示如果没有在其他地方显示设置:content-type的头字段,默认响应为text/plain;纯文本格式

text/html:默认的响应类型,也就是我们说的页面

text/plain:纯文本格式,类似于.txt文件

text/css:css样式表的类型,.css

text/javascript:java脚本,.js 前端文件,也可以理解是Java解析的程序文件

location / { root html; index index.html index.htm; default_type text/plain; return 200 "way:$request_method"; }

nginx的内置变量: $uri: 请求的URI,不包含主机和查询参数。

$request_uri: 请求的URI,包含主机和查询参数。

$args: 查询参数部分,即?后面的内容。

$query_string: 整个查询字符串,包含?。

$host: 请求的主机名。

$http_user_agent: 请求的User-Agent头信息,用于表示请求的客户端浏览器和操作系统。

$http_referer: 请求的Referer头信息,表示当前页面的来源URL。

$remote_addr: 客户端的IP地址。

$remote_port: 客户端的端口号。

$server_addr: 服务器的IP地址。

$server_port: 服务器的端口号。

$request_method: 请求的HTTP方法,如GET、POST、等。

$content_type: 请求的Content-Type头信息,表示请求体的MIME类型。

$content_length: 请求的Content-Length头信息,表示请求体的长度。

$scheme: 请求的协议,通常是http或https。

$request_filename: 请求的文件名,用于指定请求的实际文件路径。

$document_root: 当前请求的根目录。

$server_name: 服务器名称,用于匹配server块的server_name指令。

location = 优先级最高
location ^~ /images/正则,以什么为开头
location ~*.(pglpng) $ 不区分大小写,匹配以。jpg或者.png结尾的uri 第三优先级
location /test/ 通用完整路径
location /通用匹配
优先级根据精确度来的

你可能感兴趣的:(nginx,运维)