返回顶部
首页 > 资讯 > 精选 >Nginx如何实现URL重写规则配置
  • 777
分享到

Nginx如何实现URL重写规则配置

2023-06-04 07:06:31 777人浏览 泡泡鱼
摘要

这篇文章主要介绍了Nginx如何实现URL重写规则配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。rewrite模块介绍nginx的重写模块是一个简单的正则表达式匹配与一个

这篇文章主要介绍了Nginx如何实现URL重写规则配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

rewrite模块介绍

nginx的重写模块是一个简单的正则表达式匹配与一个虚拟堆叠机结合。依赖于PCRE库,因此需要安装pcre。根据相关变量重定向和选择不同的配置,从一个location跳转到另一个location,不过这样的循环最多可以执行10次,超过后nginx将返回500错误。同时,重写模块包含set指令,来创建新的变量并设其值,这在有些情景下非常有用的,如记录条件标识、传递参数到其他location、记录做了什么等等。

rewrite模块指令

break

语法:break默认值:none使用字段:server, location, if

作用:完成当前设置的重写规则,停止执行其他的重写规则。

if

语法:if (condition) { … }默认值:none使用字段:server, location

注意:尽量考虑使用trp_files代替。

判断的条件可以有以下值:

一个变量的名称:空字符传”“或者一些“0”开始的字符串为false。字符串比较:使用=或!=运算符正则表达式匹配:使用~(区分大小写)和~(不区分大小写),取反运算!~ 和!~。文件是否存在:使用-f和!-f操作符目录是否存在:使用-d和!-d操作符文件、目录、符号链接是否存在:使用-e和!-e操作符文件是否可执行:使用-x和!-x操作符

return

语法:return code默认值:none使用字段:server, location, if

停止处理并为客户端返回状态码。非标准的444状态码将关闭连接,不发送任何响应头。可以使用的状态码有:204,400,402-406,408,410, 411, 413, 416与500-504。如果状态码附带文字段落,该文本将被放置在响应主体。相反,如果状态码后面是一个URL,该URL将成为location头补值。没有状态码的URL将被视为一个302状态码。

rewrite

语法:rewrite regex replacement flag默认值:none使用字段:server, location, if

按照相关的正则表达式与字符串修改URI,指令按照在配置文件中出现的顺序执行。可以在重写指令后面添加标记。

注意:如果替换的字符串以Http://开头,请求将被重定向,并且不再执行多余的rewrite指令。

尾部的标记(flag)可以是以下的值:

last – 停止处理重写模块指令,之后搜索location与更改后的URI匹配。break – 完成重写指令。redirect – 返回302临时重定向,如果替换字段用http://开头则被使用。permanent – 返回301永久重定向。

rewrite_log

语法:rewrite_log on | off默认值:rewrite_log off使用字段:server, location, if变量:无

启用时将在error log中记录notice级别的重写日志

set

语法:set variable value默认值:none使用字段:server, location, if

为给定的变量设置一个特定值。

uninitialized_variable_warn

语法:uninitialized_variable_warn on|off默认值:uninitialized_variable_warn on使用字段:http, server, location, if

控制是否记录未初始化变量的警告信息。

重写规则组成部分

第一部分–正则表达式

可以使用括号来捕获,后续可以根据位置来将其引用,位置变量值取决于捕获正则表达式中的顺序,$1引用第一个括号中的值,$2引用第二个括号中的值,以此类推。如:

^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$# $1是两个小写字母组成的字符串# $2是由小写字母和0到9的数字组成的5个字符的字符串# $3将是个文件名# $4是png、jpg、gif中的其中一个。

第二部分–URI

请求被改写。该URI可能包含正则表达式中的捕获的位置参数或这个级别下的nginx任何配置变量。如:

/data?file=$3.$4

如果这个URI不匹配nginx配置的任何location,那么将给客户端返回301(永久重定向)或302(临时重定向)的状态码来表示重定向类型。该状态码可以通过第三个参数来明确指定。

第三部分–标记

第三部分也就是尾部的标记(flag)。 last标记将导致重写后的URI搜索匹配nginx的其他location,最多可循环10次。如:

rewrite '^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$' /data?file=$3.$4 last;

break指令可以当做自身指令。如:

if ($bwhog) { limit_rate 300k; break;}

实例

http {    #定义image日志格式    log_fORMat imagelog '[$time_local] ' $image_file ' ' $image_type ' ' $body_bytes_sent ' ' $status;    # 开启重写日志    rewrite_log on;    server {        root /home/www;        location / {            # 重写规则信息            error_log logs/rewrite.log notice;              # 注意这里要用‘’单引号引起来,避免{}            rewrite '^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$' /data?file=$3.$4;            # 注意不能在上面这条规则后面加上“last”参数,否则下面的set指令不会执行            set $image_file $3;            set $image_type $4;        }        location /data {            # 指定针对图片的日志格式,来分析图片类型和大小            access_log logs/images.log mian;            root /data/images;            # 应用前面定义的变量。判断首先文件在不在,不在再判断目录在不在,如果还不在就跳转到最后一个url里            try_files /$arg_file /image404.html;        }        location = /image404.html {            # 图片不存在返回特定的信息            return 404 "image not found\n";        }}

感谢你能够认真阅读完这篇文章,希望小编分享的“Nginx如何实现URL重写规则配置”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Nginx如何实现URL重写规则配置

本文链接: https://lsjlt.com/news/236956.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Nginx如何实现URL重写规则配置
    这篇文章主要介绍了Nginx如何实现URL重写规则配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。rewrite模块介绍nginx的重写模块是一个简单的正则表达式匹配与一个...
    99+
    2023-06-04
  • Apache的URL重写规则如何编写
    Apache的URL重写规则可以通过在Apache的配置文件中使用或标签来编写。以下是一个简单的例子: <Directory /var/www/html> RewriteEngine On RewriteRule ^ol...
    99+
    2024-07-05
    apache
  • nginx伪静态规则如何配置
    要配置nginx的伪静态规则,可以在nginx的配置文件中使用location指令来实现。例如,如果你想要将所有以.html结尾的U...
    99+
    2023-08-15
    nginx
  • Nginx中URL重写和重定向怎么实现
    在Nginx中,URL重写和重定向可以通过配置location指令来实现。下面是一些常见的用法: URL重写:URL重写是指将请求...
    99+
    2024-04-02
  • PHP中路由的URL重写与正则匹配实现
    导语:在Web开发中,URL重写与正则匹配是实现路由的重要技术。本文将介绍在PHP中如何使用URL重写以及通过正则表达式实现路由功能,并提供具体的代码示例。一、URL重写的概念及作用URL重写是指将原始URL地址经过处理后,生成一个经过简化...
    99+
    2023-10-21
    路由 正则匹配 URL重写
  • Java UrlRewrite如何实现网站URL重写
    这篇文章给大家介绍Java UrlRewrite如何实现网站URL重写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。现在大部分的网站和商城都会使用到URL重写,接触到这个,也是因为正在做的电子商务商城。URL重写,是将...
    99+
    2023-06-17
  • Linux中如何配置firewalld规则
    小编给大家分享一下Linux中如何配置firewalld规则,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!防火墙对于控制进出 Linux 服务器的网络流量至关重要。它能够定义一组防火墙规则来控制主机上的传入流量。什么是Fi...
    99+
    2023-06-27
  • Nginx如何配置ssl实现https
    这篇文章主要介绍了Nginx如何配置ssl实现https,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、安装 Nginx ssl 模块1.检查检查是否已安装 ssl 模块:...
    99+
    2023-06-29
  • 如何设置PhpCms系统URL规则管理 phpcms教程
      一、URL规则管理   URL规则使用说明:   phpcms2008url规则定义   一、模块   模块分:PHPCMS、问吧、专题、会员、等等   首先URL规则是要应用在模块上,所以必须选择模块。   二、名...
    99+
    2022-06-12
    PhpCms PhpCms教程
  • nginx如何实现虚拟机配置
    小编给大家分享一下nginx如何实现虚拟机配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 什么是虚拟主机:虚拟主机是一种特殊的软硬件技术,它可以将网...
    99+
    2023-06-04
  • URL去重该如何实现
    URL去重该如何实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。IPv6编码地址数:2^128(约3.4&times;10^38)IPv6是IETF设...
    99+
    2023-06-17
  • Nginx主机域名配置如何实现
    本篇内容主要讲解“Nginx主机域名配置如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx主机域名配置如何实现”吧!一、配置多个端口访问不同文件相同域名,不同端口,不同文件#两个不...
    99+
    2023-07-05
  • 如何在Zabbix中配置告警升级规则
    在Zabbix中配置告警升级规则,可以通过以下步骤实现: 登录到Zabbix的Web界面,进入“Configuration”菜单...
    99+
    2024-04-02
  • python正则表达式如何实现重叠匹配
    目录正则表达式实现重叠匹配正则表达式与正则匹配正则表达式正则匹配正则表达式实现重叠匹配 import regex string = '100101010001' str_re = '...
    99+
    2024-04-02
  • Nginx如何实现重启脚本
    这篇文章主要为大家展示了“Nginx如何实现重启脚本”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Nginx如何实现重启脚本”这篇文章吧。vi /etc/init.d/nginx然后输入如下内容...
    99+
    2023-06-04
  • 如何实现nginx前后端同域名配置
    小编给大家分享一下如何实现nginx前后端同域名配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!nginx前后端同域名配置的方法实现,具体如下:upstream...
    99+
    2023-06-14
  • html中如何设置可以重复利用的规则
    这篇文章主要介绍了html中如何设置可以重复利用的规则,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。可以重复利用的规则.left {float: left...
    99+
    2023-06-27
  • 如何实现iptables建立规则和链
    本篇内容介绍了“如何实现iptables建立规则和链接”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通过向防火墙提供有关对来自某个源、到某个...
    99+
    2023-06-12
  • vue elementUI如何实现自定义正则规则验证
    这篇文章给大家分享的是有关vue elementUI如何实现自定义正则规则验证的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。项目场景:常见的表单填写中都会遇到,比如新增信息,修改信息等,如下图相信大家对...
    99+
    2023-06-29
  • 如何为 Discuz! X2 配置伪静态规则[超详细]
    URL 静态化是一个有利于搜索引擎的设置,通过 URL 静态化,达到原来是动态的 php 页面转换为静态化的 HTML 页面,可以提高搜索引擎抓取,当然,这里的静态化是一种假静态,目的只是提高搜索引擎的搜索量,下面主要介...
    99+
    2022-06-12
    Discuz 伪静态
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作