nginx(地址重写)
来源:互联网 发布:淘宝人工客服电话 编辑:程序博客网 时间:2024/06/10 22:38
rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。
rewrite语法格式及参数语法说明如下
rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag标记
正则:perl兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement
flag标记:rewrite支持的flag标记
flag标记说明:
last #本条规则匹配完成后,继续向下匹配新的location URI规则
break #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
rewrite适用位置
server(配置服务段),location,if
例子(编辑nginx的主配置文件vi /usr/local/nginx/conf/nginx.conf):
location / {if ($remote_addr = 127.0.0.1) { rewrite ^/(.*) http://www.czlun.com/$1 permanent;} root html; index index.html index.htm; }⭐⭐⭐⭐特别注意⭐⭐⭐⭐⭐⭐
在重写地址的时候
if ($remote_addr = 127.0.0.1) { rewrite ^/(.*) http://www.czlun.com/$1 permanent;}需要特别注意if的后面必须有空格,(xxx)后面和{也必须有一个空格。不然后报错。
说明:
rewrite:为固定关键字,表示开始进行rewrite匹配规则
regex部分是^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址(^表示正则开始,/(.*)匹配所有的)
replacement: 部分是http://www.czlun.com/$1$1,是取自regex部分()里的内容。匹配成功后跳转到的URL。
flag部分permanent表示永久301重定向标记,即跳转到新的http://www.czlun.com/$1地址上
以上的$remote_addr是系统的全局变量,是nginx内部定义的参数。我们在使用的时候可以查看里面根据什么去判断地址的重写。以下是较为常见的nginx全局变量的参数
$args
这个变量等于请求行中的参数,同$query_string
$contentlength
请求头中的Content-length字段。
$content_type
请求头中的Content-Type字段。
$document_root
当前请求在root指令中指定的值。
$host
请求主机头字段,否则为服务器名称。
$http_user_agent
客户端agent信息
$http_cookie
客户端cookie信息
$limit_rate
这个变量可以限制连接速率。
$request_method
客户端请求的动作,通常为GET或POST。
$remote_addr
客户端的IP地址。
$remote_port
客户端的端口。
$remote_user
已经经过Auth Basic Module验证的用户名。
$request_filename
当前请求的文件路径,由root或alias指令与URI请求生成。
$scheme
HTTP方法(如http,https)。
$server_protocol
请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr
$server_addr : 服务器地址,在完成一次系统调用后可以确定这个值。
$server_name
服务器名称。
$server_port
请求到达服务器的端口号。
$request_uri
包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。
$uri
不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
$document_uri
与$uri相同。
以下是正则表达式简单说明:
字符
描述
\
将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$”
^
匹配输入字符串的起始位置
$
匹配输入字符串的结束位置
*
匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+
匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“oll”,但不能匹配“o”
?
匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,"?"等效于"{0,1}"
.
匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式。
(pattern)
匹配括号内pattern并可以在后面获取对应的匹配,常用$0...$9属性获取小括号中的匹配内容,要匹配圆括号字符需要\(Content\)
示例1:
if ($request_method = POST) { rewrite ^/(.*) http://www.baidu.com.com/ break;//如果请求的方式是post则跳转到百度首页 #return 405;//跳转到405页面}
示例2:
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } location ~ \.(jpg|png|jpeg|gif|) {rewrite ^/(.*)$ https://www.baidu.com/ break; } }
解释:如果访问地址为localhost:80/log.png(后缀带有jpg,png,jpeg,fig)一类的访问地址,就直接跳转到百度首页,break是不再匹配后面的任何规则。
- nginx(地址重写)
- nginx rewrite(nginx url地址重写)
- Apache & nginx 的地址重写 url_rewrite,省略 index.php
- nginx反向代理服务器地址重写、负载均衡、证书认证、虚拟主机
- nginx reload 二级目录地址重写,正向负查
- NGINX 重写
- nginx重写
- 地址重写
- 地址重写
- nginx url 重写规则
- Nginx Rewrite重写
- nginx 子目录重写
- Nginx的url重写
- Nginx url重写小结
- nginx 重写规则!
- Nginx 重写URI
- Nginx重写规则指南
- nginx url重写
- ireport、jasperreport 导出excel的java代码
- 莫比乌斯函数 hdu6053
- 3A算法 AF AE AWB
- JZOJ5259. 线性规划问题
- mysql学习-----锁概念
- nginx(地址重写)
- mysql 索引详解
- ZOJ
- centos7安装zabbix-agent
- 【真题】拼多多2018校招内推编程题 最大乘积
- oracle分区索引
- 提高网站访问速度的20优化技巧
- 修改拨号键盘密度
- Python语法基础07.数据类型转换