Nginx实现URL重写
本文利用Nginx实现URL重写,本文使用Nginx与静态页面配合重写URL。
1.准备工作。
结合本文场景,需要安装Nginx。
1.1 关于Linux系统安装Nginx可以参考我的文章---(传送门)。
2.什么是URL重写?
URL重写是指将一个URL请求重新写成网站可以处理的另一个URL的过程。这样说可能不是很好理解,举个例子来说明一下,在开发中可能经常遇到这样的需求,比如通过浏览器请求的http://localhost:8080/getUser?id=1,但是需要通过SEO优化等等原因,需要把请求的地址重写为http://localhost:8080/getUser/1这样的URL,从而符合需求或者更好的被网站阅读。
当遇到这种请求的时候,就需要使用到UrlRewrite重写或者使用一些网关路由,如SpringCloud的Gateway,Zuul,又或者是Nginx来实现这个功能。
本文介绍Nginx实现URL重写。
3.使用介绍
在Nginx中使用URL重写需要使用到一个指令-----rewrite,其语法如下:
rewrite regex replacement [flag];
复制代码
- regex :可以使用正则或者字符串来表示相匹配的地址。
- replacement:可以表示重定向的地址。
- flag :flag标志的作用是用于控制当匹配到对应的rewrite规则后是否继续检查后续的rewrite规则。
flag值为如下四种,分别是:
- last:停止处理当前的rewrite指令集,而后通过重写后的规则重新发起请求,浏览器地址栏URL地址不变。
- break:和break指令一样,都是停止处理当前上下文中的其他重写模块指令。
- redirect:如果替换字符串不以“ http://”,“ https://”或“ $scheme” 开头,返回带有302代码的临时重定向,浏览器地址会显示跳转后的URL地址。
- permanent:返回301代码的永久重定向,浏览器地址栏会显示跳转后的URL地址。
例如:
server {...rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;return 403;...
}
复制代码
另外还可以根据if来判断,指令如下:
if (condition) { ... }
复制代码
其中condition是条件,如果为true,则执行大括号中的内容:
- 使用“ =”和“ !=”运算符比较变量和字符串;
- 使用“ ~”(对于区分大小写的匹配)和“ ~”(对于不区分大小写的匹配)运算符,将变量与正则表达式进行匹配。正则表达式可以包含可供以后在$1.. $9变量中重用的捕获。负操作符“ !~”和“ !~”也可用。如果正则表达式包含“ }”或“ ;”字符,则整个表达式应包含在单引号或双引号中。
- 使用“ -f”和“ !-f”运算符检查文件是否存在;
- 使用“ -d”和“ !-d”运算符检查目录是否存在;
- 使用“ -e”和“ !-e”运算符检查文件,目录或符号链接是否存在;
- 使用“ -x”和“ !-x”运算符检查可执行文件。
例如:
if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /msie/$1 break;
}if ($http_cookie ~* "id=([^;]+)(?:;|$)") {set $id $1;
}if ($request_method = POST) {return 405;
}if ($slow) {limit_rate 10k;
}if ($invalid_referer) {return 403;
}
复制代码
4.Nginx配置
本文例子只是将请求跳转到本人的博客首页http://www.dalaoyang.cn/,配置如下:
worker_processes 1;events {worker_connections 1024;
}http {server {listen 10000;server_name localhost;#如果host不是dalaoyang.cn,则301到www.dalaoyang.cn中if ( $host != "dalaoyang.cn" ){rewrite ^/(.*)$ https://www.dalaoyang.cn/$1 last;}}}
复制代码
5.测试
测试就比较简单了,在浏览器访问http://localhost:10000/about,会自动跳转到https://www.dalaoyang.cn/about,如图所示。
6.总结
大部分内容都是参考自Nginx官网来学习的,官网的例子都很详细。
参考自Nginx官网ngx_http_rewrite_module模块官方API---传送门。
Nginx实现URL重写相关推荐
- Cento7+Nginx 之 URL重写
Cento7+Nginx 之 URL重写 我们前一篇文章写了一个Cento7+Nginx 反向代理实现多域名跳转,今天主要介绍一下Cento7+Nginx 之 URL重写, Hostname: ...
- Nginx之URL重写
1.URL重写模块(Rewrite) 摘要 这个模块允许使用正则表达式重写URI(需PCRE库),并且可以根据相关变量重定向和选择不同的配置.如果这个指令在server字段中指定,那么将在被请求的lo ...
- nginx配置url重写
url重写是指通过配置conf文件,以让网站的url中达到某种状态时则定向/跳转到某个规则,比如常见的伪静态.301重定向.浏览器定向等 rewrite 语法 在配置文件的server块中写,如: s ...
- nginx的url重写[rewrite规则和参考]
本日志内容来自互联网和平日使用经验,整理一下方便日后参考. Nginx Rewrite 相关指令有 if.rewrite.set.return 等. if 的语法 应用于 server 和 locat ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(1)
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解...
大纲 一.前言 二.环境准备 三.安装与配置Nginx (windows下nginx安装.配置与使用) 四.Nginx之反向代理 五.Nginx之负载均衡 (负载均衡算法:nginx负载算法 up ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
标签:读写分离 页面缓存 URL重写 Nginx 反向代理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.bl ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解【转载】
本文只为备份,以防失效.原文请看https://blog.51cto.com/freeloda/1288553 补充说明:部分图片为测试图片,未完全复制,参考文字描述即可. Nginx 反向代理.负载 ...
- Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
最新文章
- php读取binlog,PHP解析Mysql Binlog
- 分享Kali Linux 2016.2第47周虚拟机
- 链接器(linker)的作用——CSAPP第7章读书笔记
- 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容都在这儿
- 非标自动化企业前十名_非标设备的现状
- 【机器学习】用摸鱼学来解释隐马尔可夫模型(HMM)
- SAP UI5和微信小程序对比之我见
- 漫画:什么是人工智能
- 从M2M迁移到IIoT工业物联网
- 迷宫(信息学奥赛一本通-T1215)
- 盲人编程_帮助盲人学习编码
- do while(false)实用技巧
- 硬件电路设计之电平转换芯片SN74LVC4245A
- 人脸识别 (4) 人脸对齐
- R代码模拟世界杯1000次,速成2018世界杯预言帝
- 了解区块链(一)——加密货币以及区块链的价值
- ASP.NET程序设计复习题
- 真机测试无法验证应用
- java计算机毕业设计体育用品购物系统源程序+mysql+系统+lw文档+远程调试
- 罗胖怎么做知识服务?
热门文章
- Docker基础5--3.1docker镜像的操作
- 网络诊断“您可能需要与该网络的Internet服务提供商ISP签署协议才能获得访问Internet的权限
- python实现基本的矩阵运算
- Smali 语法解析——Hello World
- 7Z010 引脚功能详解
- 【OpenGL】高级片段着色器——在片段着色器中生成图像数据茹利亚集Julia set
- 《大咖说开源第二季》一、二期
- 商品模块的整理_sku属性_ElaticSearch查询
- 回音消除、噪音抑制技术相关知识
- 为什么stm32有的外设在进行初始化的时候需要将寄存器重设为缺省值?不设置会怎么样?...