Nginx正则表达式与Nginx rewrite重写功能的介绍
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关Nginx正则表达式与Nginx rewrite重写功能的介绍,文章内容质量较高,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、 Rewrite 跳转实
千家信息网最后更新 2026年10月31日Nginx正则表达式与Nginx rewrite重写功能的介绍
这篇文章将为大家详细讲解有关Nginx正则表达式与Nginx rewrite重写功能的介绍,文章内容质量较高,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、 Rewrite 跳转实现
服务协议功能模块
url 资源定位路径
- nginx----支持url重写、支持if条件判断,但不支持else
- 跳转----循环最多可以执行10次,超过后nginx将返回500代码错误
- rewrite----使用nginx'全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向
二、Rewrite 使用场景 - 使用rewrite进行匹配跳转
- 使用if匹配全局变量后跳转
- 使用location匹配再跳转
1.rewrite放在 server{},if{},location{}段中
2.对域名或参数字符串:使用if全局变量匹配、使用proxy_pass反向代理
三、nginx正则表达式
常用的正则表达式元字符
四、Rewrite 命令
location分类
正则匹配的常用表达式
五、location优先级
按优先级排列: - = 类型
- ^~ 类型表达式
- 正则表达式(和)类型
- 常规字符串匹配类型,按前缀匹配
- 通用匹配(/),如果没有其他匹配,任何请求都会匹配到
location优先级规则(从高到低排列)
1.匹配某个具体的文件 - location = 完整路径
- location ^~ 完整路径
- location ~* 完整路径
- location ~ 完整路径
- location 完整路径
- location /
2.用目录做匹配访问某个文件 - location = 目录
- location ^~ 目录
- location ~ 目录
- location ~* 目录
- location 目录
location /
六、应用场景测试
公司旧域名 www.domain.com 因业务需求有变更,需要使用新域名 www.newdomain.com 代替,不能废除旧域名,从旧域名跳转到新域名,且保持其参数不变[root@localhost bin]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm获取http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm警告:/var/tmp/rpm-tmp.IHyTHc: 头V4 RSA/SHA1 Signature, 密钥 ID 7bd9bf62: NOKEY准备中... ################################# [100%]正在升级/安装...1:nginx-release-centos-7-0.el7.ngx ################################# [100%][root@localhost bin]# yum install nginx -y[root@localhost ~]# mkdir /abc[root@localhost ~]# mount.cifs //192.168.56.1 /mntPassword for root@//192.168.254.10/linuxs: [root@localhost ~]# cd /abc/LNMP-C7/LNMP-C7/[root@localhost LNMP-C7]# lsDiscuz_X3.4_SC_UTF8.zipmysql-boost-5.7.20.tar.gzncurses-5.6.tar.gznginx-1.12.2.tar.gzphp-5.6.11.tar.bz2php-7.1.10.tar.bz2php-7.1.20.tar.bz2php-7.1.20.tar.gzzend-loader-php5.6-linux-x86_64_update1.tar.gz[root@localhost LNMP-C7]# tar -zxvf nginx-1.12.2.tar.gz -C /opt[root@localhost LNMP-C7]# useradd -M -s /sbin/nologin nginx[root@localhost LNMP-C7]# cd /opt/nginx-1.12.2/[root@localhost nginx-1.12.2]# lsauto CHANGES.ru configure html man srcCHANGES conf contrib LICENSE README[root@localhost nginx-1.12.2]# yum install gcc gcc-c++ pcre pcre-devel make zlib-devel -y[root@localhost nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module[root@localhost nginx-1.12.2]# make && make install[root@localhost conf]# vim nginx.conf37 server_name www.accp.com;41 access_log logs/www.accp.com/access.log main;[root@localhost conf]# yum install bind -y[root@localhost conf]# vim /etc/named.conf 13 listen-on port 53 { any; };21 allow-query { any; };[root@localhost conf]# vim /etc/named.rfc1912.zones 25 zone "accp.com" IN {26 type master;27 file "accp.com.zone";28 allow-update { none; };29 };[root@localhost conf]# cd /var/named/[root@localhost named]# lsdata named.ca named.localhost slavesdynamic named.empty named.loopback[root@localhost named]# cp -p named.localhost accp.com.zone[root@localhost named]# vim accp.com.zone www IN A 192.168.247.202[root@localhost named]# systemctl start named[root@localhost named]# systemctl stop firewalld.service [root@localhost named]# setenforce 0[root@localhost named]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/[root@localhost named]# cd /usr/local/nginx/[root@localhost nginx]# lsconf html logs sbin[root@localhost nginx]# cd logs/[root@localhost logs]# mkdir www.accp.com[root@localhost logs]# lserror.log www.accp.com[root@localhost logs]# nginx [root@localhost logs]# netstat -natp | grep 80tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6打开win10客户机,配置dns服务器,并使用域名访问。
[root@localhost logs]# vim /usr/local/nginx/conf/nginx.conf location / { #域名重定向' if ($host = 'www.accp.com') {' rewrite ^/(.*)$ http://www.kgc.com/$1 permanent;' } root /html; index index.html index.htm; }[root@localhost logs]# vim /etc/named.rfc1912.zones zone "kgc.com" IN { type master; file "kgc.com.zone"; allow-update { none; };};[root@localhost logs]# cd /var/named/[root@localhost named]# lsaccp.com.zone dynamic named.empty named.loopbackdata named.ca named.localhost slaves[root@localhost named]# cp -p accp.com.zone kgc.com.zone[root@localhost named]# systemctl restart named[root@localhost named]# killall -1 nginx[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf37 server_name bbs.accp.com;42 location /post {43 rewrite (.+) http://www.accp.com/bbs$1 permanent;44 }[root@localhost html]# cd -/var/named[root@localhost named]# vim accp.com.zone [root@localhost named]# cat accp.com.zone $TTL 1D@ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimumNS @A 127.0.0.1bbs IN A 192.168.247.202[root@localhost named]# killall -3 nginx[root@localhost named]# nginx[root@localhost named]# systemctl restart named
基于客户端IP访问跳转[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf42 #设置是否合法的IP标志43 set $rewrite true;44 #判断是否为合法IP,是否是允许的IP45 if ($remote_addr = "192.168.247.139"){46 set $rewrite false;47 }48 #不被允许的IP进行判断,打上标记49 if ($rewrite = true){50 rewrite (.+) /maintenance.html;51 }52 #匹配标记进行跳转站点53 location = /maintenance.html {54 root html;55 }[root@localhost named]# cd /usr/local/nginx/html/[root@localhost html]# ls50x.html index.html[root@localhost html]# vim maintenance.html[root@localhost html]# killall -3 nginx [root@localhost html]# nginx
基于参数匹配的跳转---跳转到首页[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf37 server_name www.accp.com;42 if ($request_uri ~ ^/100-(100|200)-(\d+).html$){43 rewrite (.*) http://www.accp.com permanent;44 }[root@localhost named]# vim accp.com.zone [root@localhost named]# cat accp.com.zone $TTL 1D@ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimumNS @A 127.0.0.1www IN A 192.168.247.202[root@localhost named]# systemctl restart named[root@localhost named]# killall -3 nginx[root@localhost named]# nginx
基于目录下所有PHP文件跳转[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf42 location ~* /upload/.*\.php$ {43 rewrite (.+) http://www.accp.com permanent;44 }[root@localhost named]# nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@localhost named]# killall -3 nginx[root@localhost named]# nginx
基于最普通URL请求的跳转--跳转到首页[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf42 location ~* ^/abc/123.html {43 rewrite (.+) http://www.accp.com permanent;44 }
基于最普通URL请求的跳转--跳转到首页[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf42 location ~* ^/abc/123.html {43 rewrite (.+) http://www.accp.com permanent;44 }[root@localhost named]# killall -3 nginx[root@localhost named]# nginx
表达式
域名
正则
目录
路径
变量
类型
功能
优先级
全局
参数
文件
首页
支持
合法
普通
内容
场景
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网企业
科技互联网项目
互联网下的科技发展
没上市的科技互联网公司
互联网金融 金融科技
互联网科技金融公司
互联网科技公司电话
紫鲸互联网科技
百单互联网科技有限公司
汇久创客互联网科技
互联网科技博客
联恩商钥互联网科技有限公司
无锡溥仪互联网科技有限公司
哈尔滨秒房互联网科技有限公司
辽宁互联网新科技
风投北京互联网科技
扫呗互联网科技有限公司
互联网科技大佬云集
互联网科技创新方面的资料
前海云享互联网科技
花魁咖啡
湖南永感互联网科技有限公司
互联网科技战争
金融科技与互联网金融
科技互联网公司logo
湖南一路畅行互联网科技
互联网科技扶贫时间
深圳育鹏互联网科技有限公司招聘
江苏互联网智能科技软件
互联网科技快讯热点