web服务器-Nginx URL重写
web服务器-Nginx URL重写
一. URL重写介绍
- 和apache等web服务软件一样,rewrite的主要功能是实现URL地址的重定向。Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的。默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持。
- Rewrite功功能是Nginx服务器提供的一个重要功能。几乎是所有的web产品必备技能,用于实现URL重写。URL重写是非常有用的功能,比如它可以在我们在改变网站结构后,不需要客户端修改原来的书签,也不需要其他网站修改对我们网站的友情链接,还可以在一定程度上提高网站的安全性,能够让我们的网站显得更专业。
二,应用场景
- 域名变更(京东)
- 用户跳转(从某个连接跳转到另外一个连接)
- 伪静态场景(便于CDN缓存动态页面数据)
三. URL重写原理
URL重写
URL模块语法
- set设置变量
- if负责语句中的判断
- return 返回返回值或者URL
- break 终止后续的rewire规则
- rewrite重定向URL
set指令 自定义变量
Syntax:
set $variable value;
Default:
—
Context:
server, location, if
将http://www.ayitula.com 重写为 http://www.ayitula.com/baism
location / {
set $name baism;
rewrite ^(.*)$ http://www.ayitula.com/$name;
}
if指令 负责判断
Syntax:
if (condition) { ... }
Default:
—
Context:
server, location
条件匹配
模糊匹配 #
匹配 ~
不匹配 !~
不区分大小写的匹配 ~*
精准匹配 =location / {
root html;
index index.html index.htm;
if ($http_user_agent ~* 'Chrome') {
break;
return 403;
#return http://www.jd.com;
}
}
return指令 定义返回数据
Syntax: return code [text];
return code URL;
return URL;
Default: —
Context: server, location, if
location / {
root html;
index index.html index.htm;
if ($http_user_agent ~* 'Chrome') {
return 403;
#return http://www.jd.com;
}
}break 指令 停止执行当前虚拟主机的后续rewrite指令集
Syntax: break;
Default:—
Context:server, location, if
location / {
root html;
index index.html index.htm;
if ($http_user_agent ~* 'Chrome') {
break;
return 403;
}
}rewrite指令 实现重写url
rewrite <regex> <replacement> [flag]; rewrite 关键字
regex 正则
replacement 替换内容
flag 标记
- flag
- last #本条规则匹配完成后,继续向下匹配新的location URI规则
- break #本条规则匹配完成即终止,不再匹配后面的任何规则
- redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
- permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
- flag
重定向就是将网页自动转向重定向,permanent和redirect从定向的区别
- 301永久性重定向:新网址完全继承旧网址,旧网址的排名等完全清零
- 301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。
- 302临时性重定向:对旧网址没有影响,但新网址不会有排名
- 搜索引擎会抓取新的内容而保留旧的网址
permanent标志:永久重定向
域名跳转
www.ayitula.com 重写为 www.jd.com
server {
listen 80;
server_name www.ayitula.com;
location / {
rewrite ^/$ http://www.jd.com permanent; }
}
redirect标志:临时重定向
域名跳转
www.ayitula.com 重写为 www.jd.com
server {
listen 80;
server_name www.ayitula.com;
location / {
rewrite ^/$ http://www.jd.com redirect; }
}break标志: 类似临时重定向
域名跳转
www.ayitula.com 重写为 www.jd.com
server {
listen 80;
server_name www.ayitula.com;
location / {
rewrite ^/$ http://www.jd.com break; }
}last标志:
- url重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到报500错误,地址栏url不变
- last 一般出现在server或if中
- 根据用户浏览器重写访问目录
如果是chrome浏览器 就将
http://192.168.10.42/$URI
重写为
http://http://192.168.10.42/chrome/$URI 实现 步骤
1)URL重写
2)请求转给本机location location / {
.....
if ($http_user_agent ~* 'chrome'){
#^ 以什么开头 ^a
#$ 以什么结尾 c$
#. 除了回车以外的任意一个字符
#* 前面的字符可以出现多次或者不出现
#更多内容看正则表达式 re
rewrite ^(.*)$ /chrome/$1 last;
} location /chrome {
root html ;
index index.html;
}
}
web服务器-Nginx URL重写的更多相关文章
- 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式
通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率 ...
- Nginx URL重写(rewrite)配置及信息详解
URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功 ...
- web服务器-nginx配置文件
web服务器-nginx配置文件 一 nginx配置文件 #启动子进程程序的默认用户 #user nobody #一个主进程和多个工作进程.工作进程是单进程的,且不需要特殊授权即可运行:这里定义的是工 ...
- 很不错的NGINX URL重写实例
转自:http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewrite ...
- nginx url 重写 [转]
本文转自 http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewri ...
- 高性能Web服务器Nginx
高性能Web服务器Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强 ...
- 高性能Web服务器Nginx的配置与部署研究(7)核心模块之主模块的非测试常用指令
1. error_log 含义:指定存储错误日志的文件 语法:error_log <file> [debug|info|notice|warn|error|crit] 缺省:${prefi ...
- web服务器-nginx优化
web服务器-nginx优化 一 并发优化 nginx工作模式: 主进程 + 工作进程 启动工作进程数量 worker_processes 4; #指定运行的核的编号,采用掩码的方式设置编号 work ...
- web服务器-nginx虚拟主机
web服务器-nginx虚拟主机 一 虚拟主机介绍 就是把一台物理服务器划分成多个虚拟的服务器, 每一个虚拟主机都可以有独立的域名和独立的目录,同时发布俩个网站. 二. 基于IP的虚拟主机 应用场景: ...
随机推荐
- 利用LNMP实现wordpress站点搭建
一.部署MySQL 1.1 二进制安装mysql5.6 # 准备用户,依赖包,二进制程序 [root@nginx ~]# yum install -y libaio perl-Data-Dumper ...
- springboot自动扫描添加的BeanDefinition源码解析
1. springboot启动过程中,首先会收集需要加载的bean的定义,作为BeanDefinition对象,添加到BeanFactory中去. 由于BeanFactory中只有getBean之类获 ...
- JVM调优——JVM监控工具jvisualvm的使用及GC插件安装
一.前言 在高并发的场景下,我们网站的的访问性能会降低,我们怎么优化,这是个问题!天天听JVM调优,实际上还是不知道怎么调优,调优也是看着网上说的修改一下JVM的堆的空间等等进行的.实际上我们应该在压 ...
- VS2019下配置OpenGL全过程
一:下载VS2019 官网下载社区版 二:下载GLEW.GLFW 百度网盘地址: 链接:https://pan.baidu.com/s/1Uvz9svdnVRvDXNHjVgApig 提取码:rsgp ...
- APK修改神器:插桩工具 DexInjector
本文介绍了一个针对Dex进行插桩的工具,讲解了一下直接修改Dalvik字节码和Dex文件时遇到的问题和解决方法 作者:字节跳动终端技术-- 李言 背景 线下场景中,我们经常需要在APK中插入一些检测代 ...
- MYSQL文件复制及备份
周末研究了下mysql的数据结构,记录下: 场景1:当从一台电脑的mysql的data中复制数据库的文件夹到另一台电脑上时会发现 表不存在,函数等也不存在 方法:1.需要将data根目录下的ibdat ...
- 【信而泰】网络损伤仿真,为5G应用保驾护航
5G,绝对是今年最热门的话题!2019年6月6日,工信部正式向中国电信.中国移动.中国联通.中国广电发放5G商用牌照,中国正式进入5G商用元年.5G不仅仅是一次通信技术的升级,更是开启了一个新的时代. ...
- 帆软和思迈特软件Smartbi产品的详细对比
一.设计模式上 (1)finereport V10.0需要下载一个600M的设计器,采用类excel的设计模式,打开时间有20S,反复测试几次,基本都在20多秒.(测试电脑core I5 4核8G). ...
- vim编辑以及脚本编程练习
转至:http://www.178linux.com/88128 vim编辑器的使用总结: vim在工作过程当中有三种模式:编辑模式.输入模式.末行模式. 1.编辑模式:即命令模式,键盘操作常被理解为 ...
- 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)
前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...