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

      1. last #本条规则匹配完成后,继续向下匹配新的location URI规则
      2. break #本条规则匹配完成即终止,不再匹配后面的任何规则
      3. redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
      4. permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
  • 重定向就是将网页自动转向重定向,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重写的更多相关文章

  1. 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式

    通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率 ...

  2. Nginx URL重写(rewrite)配置及信息详解

    URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功 ...

  3. web服务器-nginx配置文件

    web服务器-nginx配置文件 一 nginx配置文件 #启动子进程程序的默认用户 #user nobody #一个主进程和多个工作进程.工作进程是单进程的,且不需要特殊授权即可运行:这里定义的是工 ...

  4. 很不错的NGINX URL重写实例

    转自:http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewrite ...

  5. nginx url 重写 [转]

    本文转自 http://www.jbxue.com/article/2187.html 本文介绍nginx URL重写的相关知识,包括301重定向的内容等,希望对大家有所帮助. nginx rewri ...

  6. 高性能Web服务器Nginx

    高性能Web服务器Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强 ...

  7. 高性能Web服务器Nginx的配置与部署研究(7)核心模块之主模块的非测试常用指令

    1. error_log 含义:指定存储错误日志的文件 语法:error_log <file> [debug|info|notice|warn|error|crit] 缺省:${prefi ...

  8. web服务器-nginx优化

    web服务器-nginx优化 一 并发优化 nginx工作模式: 主进程 + 工作进程 启动工作进程数量 worker_processes 4; #指定运行的核的编号,采用掩码的方式设置编号 work ...

  9. web服务器-nginx虚拟主机

    web服务器-nginx虚拟主机 一 虚拟主机介绍 就是把一台物理服务器划分成多个虚拟的服务器, 每一个虚拟主机都可以有独立的域名和独立的目录,同时发布俩个网站. 二. 基于IP的虚拟主机 应用场景: ...

随机推荐

  1. Linux运维-常用操作-培训用例

    一.服务器环境 Centos 7.9 二.常用连接工具(免费) 1.Finalshell 2.MobaXterm 3.Putty + WinSCP 三.Linux  系统目录结构 /bin :是 Bi ...

  2. HTTP缓存小结

    介绍 提到页面优化,浏览器缓存必定是一个绕不过的话题,判断一个网站的性能最直观的就是看网页打开的速度,而提高网页反应速度的一个方式就是使用缓存.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟, ...

  3. 《PHP程序员面试笔试宝典》——如何应对面试官的“激将法”语言?

    如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> "激将法"是面试官用以淘汰求职者的一种惯用方法,它是指面试官采用怀疑.尖锐或咄咄逼人的交流方式来对求 ...

  4. Solution -「NOI.AC 省选膜你赛」寄蒜几盒

    题目 题意简述   给定一个含有 \(n\) 个顶点的凸多边形( \(n\) 是偶数),对于每一对相对的边(即中间有 \(\frac{n}2-1\) 条其它边),延长它们以将平面分割为多块,并把包含原 ...

  5. 聊聊DevOps制品管理-不止是存储制品这么简单

    什么是制品? 制品是指由源码编译打包生成的二进制文件,不同的开发语言对应着不同格式的二进制文件:这些二进制文件通常用于运行在服务器上或者作为编译依赖,"制品的管理"是配置管理的重要 ...

  6. [Java]Java中的自动包装

    来源:https://www.cnblogs.com/cheapcrook/archive/2012/04/25/2470478.html 自动拆装箱(AutoBoxing) 是JDK1.5中新增加的 ...

  7. React 函数组件中对window添加事件监听resize导致回调不能获得Hooks最新状态的问题解决思路

    React 函数组件中对window添加事件监听resize导致回调不能获得Hooks最新状态的问题解决思路 这几天在忙着把自己做的项目中的类组件转化为功能相同的函数组件,首先先贴一份该组件类组件的关 ...

  8. 【基础知识】CPU上下文切换(进程上下文切换 - 线程上下文切换 - 中断上下文切换)

    CPU 上下文切换是什么 CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器 ...

  9. 常用邮箱POP3和SMTP服务器 设置

    转至:https://blog.csdn.net/zjfei/article/details/4757424?spm=1001.2101.3001.6661.1&utm_medium=dist ...

  10. oracle 日期改字符格式_Oracle日期类型转换格式

    转至:https://blog.csdn.net/weixin_39629269/article/details/111537468 将日期型转换成字符串时,可以按新的格式显示. 如格式YYYY-MM ...