网站设计网站设计网站设计,营销推广策略有哪些,接网站开发的公司电话,图怪兽在线制作图片location 匹配URI
location 匹配的规则和优先级#xff1b;***重点
nginx常用的变量#xff1b;要求掌握
rewrite 重定向#xff1b;掌握/理解 location匹配#xff1a;***
正则表达式#xff1a;匹配的是文件内容
常见的正则表达式#xff1a…location 匹配URI
location 匹配的规则和优先级***重点
nginx常用的变量要求掌握
rewrite 重定向掌握/理解 location匹配***
正则表达式匹配的是文件内容
常见的正则表达式
. 匹配任意单个字符包括汉字
^ 起始位置
$ 结束位置
* 匹配前面的字符0次或者多次匹配前面的字符1次或者多次
? 匹配前面的字符1次或者0次
\ 转义符\..;\d 匹配纯数字
[a-zA-Z0-9] 匹配所有大小写字符或者任意数字
[a] 匹配单个字符a
{n} 连续重复出现几次
{m,n} 最少出现m次最多出现n次
() 分组
| 逻辑或URI:统一资源标识符是一种字符串标识用于表示抽象的或者物理资源文件、图片、视频
location就是来匹配URI的
1.精确匹配location / {...}
2.正则匹配location~ / {...}
3.通用匹配location / {...}
匹配规则 精确匹配完全匹配必须完全一致
^~ 匹配普通字符前缀匹配
~ 区分大小写的匹配
~* 不区分大小写的匹配
~$ 结束位置
!~ 取反区分大小写取得逻辑非
!~* 取反不区分大小写
location的匹配原则越精确优先级越高
匹配的优先级
精确匹配 正则匹配 通用匹配
location location ^~ location ~* location /test location /
配置文件的修改
vim /usr/local/nginx/conf/nginx.conf修改后
nginx -t #查看语法是否有问题
systemctl restart nginx #重启nginx服务
生产中location的匹配规则
1.第一个必选规则
location /
直接匹配根网站通过域名访问网站首页是最多的使用精确匹配可以加快处理速度
2.第二个规则
location ^~ /static/ {}
处理静态文件的请求目录匹配
3.
location ~* \.(gif|jpg|png|css) {...} #匹配图片用的
4.通用规则
location / {
proxy_pass 指定代理反向代理转发动态请求将.php .jsp的请求发送到后端}location /test/ { #指定匹配} rewrite 重写重定向
作用
rewrite使用nginx的全局变量或者是自己设置的变量结合正则表达式和标志位实现URL的重写以及重定向
rewrite只能放在server{},location{},if{}中并且默认只能对域名后边的除去传递的参数外的字符串起作用
例
http://www.kgc.com/a/we/index.php?id1ustr #只对/a/we/index.php重写。
rewrite执行的顺序
1.先执行server块当中的rewrite
2.执行location匹配
3.如果location当中还有rewrite继续执行
不停rewrite死循环只能10次然后报错状态码500
rewrite的语法
rewrite regex replacemnet [flag]
rewrite 开始重定向
regex 正则匹配的规则
replacemnet 表示跳转后的内容你要重定向的url
flag 标志位表示rewrite支持的flag标记permanent 永久重定向返回码301
redirect 临时重定向返回码302
永久重定向301永久性的变更URL搜索引擎会转移他的权重以及排名到新的URL
临时重定向302用于短期变更例网站维护或者升级更新搜索引擎不会转移权重和排名到新的URL
304 表示获取的是本地的缓存
flag标记说明
last 本条规则匹配完成后继续向下匹配新的location URI规则。
break 本条规则匹配完成即终止不再匹配后面的任何规则且URI不会发生变化。
redirect 返回302临时重定向浏览器地址会显示跳转后的URL地址。
permanent 返回301永久重定向浏览器地址栏会显示跳转后的URL地址。
例
permanent:
location / {rewrite /test/(.*) /ky30/$1 permanent;index index.html index.htm;}mkdir test
echo test index.html
mkdir ky30
echo ky30 index.html
返回301,永久重定向
break的作用
是重定向但是不会改变URI而且只会请求一次跳出当前匹配立即终止
last
本条负责匹配完成后继续向下匹配只要有last就继续匹配配置的时候需要注意防止进入死循环
死循环的报错rewrite or internal redirection cycle while processing #写成死循环一直在匹配location循环10次后终止返回码500. 基于域名的跳转
现在公司旧域名www.kgc.com有业务需求变更需要使用新域名www.benet.com代替但是旧域名不能废除 需要跳转到新域名上而且后面的参数保持不变。
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.kgc.com; #域名修改 #charset utf-8;#access_log /var/log/nginx/kgc.com-access.log; #日志修改location / {#添加域名重定向if ($host www.kgc.com){ #$host为rewrite全局变量代表请求主机头字段或主机名rewrite ^/(.*)$ http://www.benet.com/$1 permanent; #在重定向时$1表示请求的URL}root html;index index.html index.htm;}
}echo 192.168.220.10 www.kgc.com www.benet.com /etc/hosts
systemctl restart nginx
permanent: 永久性重定向请求日志中的状态码为301。 基于IP地址的跳转页面维护、升级
今天公司业务新版本上线要求所有 IP 访问任何内容都显示一个固定维护页面 只有公司 IP 192.168.220.10访问正常。
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.kgc.com; #域名修改 charset utf-8;access_log /var/log/nginx/kgc.com-access.log; #日志修改#设置是否合法的IP标记set $rewrite true; #设置变量$rewrite变量值为boole值true#判断是否为合法IPif ($remote_addr 192.168.220.10){ #当客户端IP为192.168.220.10时将变量值设为false不进行重写set $rewrite false;}#除了合法IP其它都是非法IP进行重写跳转维护页面if ($rewrite true){ #当变量值为true时进行重写rewrite (.) /error.html; #重写在访问IP后边插入/error.html例如192.168.220.22/error.html}location /error.html {root html; #网页返回html/error.html的内容}location / {root html;index index.html index.htm;}
}systemctl restart nginx#只有 IP 为 192.168.220.10 能正常访问其它地址都是维护页面systemctl restart nginx.service
基于目录下所有 php 结尾的文件跳转
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.test.com; #域名修改 charset utf-8;access_log /var/log/nginx/www.test.com-access.log;location ~* /upload/.*\.php$ {rewrite (.) http://www.test.com permanent;}location / {root html;index index.html index.htm;}
}
systemctl restart nginx
访问http://www.test.com/upload/123.php直接跳转到www.test.com Nginx的内置变量
$uri
$remote_addr 客户端的IP地址
$remote_port 客户端的端口号
$server_addr 服务器的IP地址
$server_port 服务器的端口号。表示如果没有在其他地方显示设置content-type的字段默认响应为text/plan纯文本格式
text/html 默认的响应类型也就是我们说的页面