- location块是nginx配置文件中,配置在http块中的server块中,匹配的是uri
 
location匹配uri的方式 :
- 
精确匹配: location = /[ ...}
 - 
正则匹配: location - /{ ...}
 - 
一般匹配: location /{ ....}
 
匹配的规则:
- 
= :精确匹配,完全匹配,错一个字都匹配到,必须完全一致。
 - 
^~ : 匹配普通字符,前缀匹配
 - 
~ :区分大小写的匹配
 - 
~ * :不区分大小写的匹配.
 - 
~$ : 结束位置
 - 
!~ :区分大小写的匹配,取的逻辑非,取反
 - 
!~* :不区分大小写的取反
注 :location 越精确,越匹配(优先级越高)
 
匹配的优先级 :
- 
精确匹配 最高
 - 
正则匹配 次之
 - 
通用匹配 最后
 
location = > location ^- > locatuin -* > location /test/ > location /
一旦匹配到了之后,不再向下匹配.
生产中location 匹配规则;
- 
第一个必选规则: location = /
直接匹配根网站。通过域名访问网站首贞是最多的。使用精确匹配,可以加快处理速度。首贞。
 - 
第二个规则 : location ^- /static/ f 处理静态文件的请求,目录匹配.
 - 
第三个规则 :location -*.(gifljpglpnglcss)、
四配图片用的
 
- 第四个通用规则 :
 
location / {
proxy_pass 指定代理,反向代理,转发动志请求。.php .jsp的请求,发到后端
}
rewrite 重写、重定向
- rewarite使用nginx的全局变量或者自己设置的变量,结合正则表达式和标志位实现url的重定向
 
rewrite 执行顺序 :
- 
执行server块当中的rewrite
 - 
执行location匹配
 - 
如果location当中还有rewrite,继续执行。
 
不停rewrite,死循环,只能10次,然后报错,报错的状态码: 500
rewrite的语法:
rewrite <regex> <replacemnet> [flag]
        rewrite :开始重定向 regex:正则匹配的规则 replacemnet:表示跳转后的内容,你要重定向的url flag :标志位 (4种)
- 
permanent :永久重定向: 返回码301 ,永久性的变更url,搜索引擎会转移他的权重以及排名到新的URL.
 - 
redirect :临时重定向,显示的返回码: 302 ,用于短期变更(网站维护,或者升级更新)。搜索引擎是不是转移权重和排名到新的url
 - 
break :不会改变url而且只会请求一次、跳出当前匹配 ,即刻终止
 - 
last :本条负责匹配完成后,继续向下匹配,只要有 last ,就继续匹配,,配置的时候要注意,防止死循环
如 :日志显示:
rewrite or internal redirection cycle while processing
#表示写成了死循环,一直在匹配 location,10次,返回码500. 
nginx的变量 :
- 
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头部的值传递给后端服务器。
 
如果没有在其他地方显示设置 content-type的头字段,默认响应为text/plain; 纯文本格式
test/html :默认的响应类型,也就是我们说的页面
test/plain :纯文本格式,类似于 .txt 文件
test/css :css样式表的 类型 .css
test/javascript :java脚本 .js 前端文件 ,也可以理解是 java解析的程序文件