Nginx中Rewrite的使用
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,NginxNginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler
千家信息网最后更新 2025年12月02日Nginx中Rewrite的使用
Nginx 的源代码使用 2-clause BSD-like license。Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好
Nginx优点
Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
一、Nginx环境准备
一台nginx服务器提供 www.accp.com 的网页。
1、安装rpm源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm2、直接用yum安装nginx和bind
yum install nginx bind -y3、DNS域名解析
vim /etc/named.conf
vim /etc/named.rfc1912.zones ##复制添加一段zone "accp.com" IN { type master; file "accp.com.zone"; allow-update { none; };};
cd /var/namedcp -p named.localhost accp.con.zonevim accp.con.zone 4、修改nginx配置文件
vim /etc/nginx/conf.d/default.conf5、启动服务,关闭防火墙
systemctl stop firewalld.service setenforce 0systemctl start namedsystemctl start nginx二、Rewrite 介绍
2.1、Rewrite跳转场景
URL 看起来更规范、合理;
企业会将动态URL地址伪装成静态地址提供服务;
网址换域名后,让旧的访问跳转到新的域名上;
服务端某些业务调整
2.2、Rewrite 实用场景
1、Nginx跳转需求的实现方式:
使用rewrite进行匹配跳转;
使用 if 匹配全局变量后跳转;
使用 location 匹配再跳转
2、rewrite放在 server { },if { };location{ }段中;
3、对域名或参数字符串:
使用 if 全局变量匹配;
使用 proxy_pass 反向代理
2.3、常用的正则表达式元字符
2.4、Rewrite 命令
语法:
flag标记说明:
last和break比较:
2.5、location 分类
分类:
location = patt { } [精准匹配]
location patt { } [一般匹配]
location ~ patt { } [正则匹配]
正则匹配的常用表达式:
2.6、location 优先级
相同类型的表达式,字符串长的会优先匹配;
按优先级排列:
= 类型
^~ 类型表达式
正则表达式(~ 和 ~*)类型
常规字符串匹配类型,按前缀匹配
通用匹配(/),如果没有其他匹配,任何请求都会匹配到
三、具体场景
3.1、场景一:基于域名的跳转
实验环境:公司旧域名www.accp.com,因业务需求有变更,需要使用新域名www.newaccp.com代替.
需求:
不能废除旧域名
从旧域名跳转到新域名,且保持其参数不变
1、修改nginx的配置文件
vim /etc/nginx/conf.d/default.conf//添加一段if ($host = 'www.accp.com') { rewrite ^/(.*)$ http://www.newaccp.com/$1 permanent; }//域名重定向:就是当访问www.wang.com时,将激动跳转到www.new.wang.com域名。//permanent:表示永久的意思。2、DNS服务提供新域名的解析
vim /etc/named.rfc1912.zones//复制之前的accp域名声明段修改cd /var/namedcp -p accp.com.zone newaccp.com.zone3、重启服务
systemctl stop nginxsystemctl start nginxsystemctl restart named验证:在win10的浏览器中输入新域名www.accp.com
3.2、场景二:基于客户端IP地址访问跳转
实验要求:今天公司业务版本上线,所有IP访问任何内容都显示一个固定维护页面,只有公司的IP才能访问正常。
公司IP地址:192.168.111.146
PC客户端:192.168.111.140
把上一个实验的nginx配置部分删除,以防影响下面的实验。
1、修改nginx的配置文件,重启服务
vim /etc/nginx/conf.d/default.conflisten 80;server_name www.accp.coom;#charset koi8-r;access_log /var/log/nginx/www.accp.com-access.log main; #设置是否合法的IP标志set $rewrite true;#判断是否为合法IPif ($remote_addr = "192.168.111.146"){ set $rewrite false;}#非法IP进行判断打上标记if ($rewrite = true){ rewrite (.+) /main.html;}#匹配标记进行跳转站点location = /main.html { root /usr/share/nginx/html;}systemctl stop nginxsystemctl start nginx 2、给 main.html 添加自定义页而内容
cd /usr/share/nginx/htmlvim main.html test网站 网站维护中,请稍等~~~
systemctl restart nginx 用公司的IP地址访问:
通过客户端IP地址访问:
3.3、场景三:基于旧、新域名跳转并加目录
例如:现在访问的是 http://bbs.accp.com ,现在需要将这个域名下面的发帖都跳转到 http://www.accp.com/bbs ,注意保持域名跳转后的参数不变。
1、在nginx配置文件中添加以下代码
vim /etc/nginx/conf.d/default.conf listen 80; server_name bbs.accp.coom; #charset koi8-r; access_log /var/log/nginx/www.accp.com-access.log; #添加一段 location /post { rewrite (.+) http://www.accp.com/bbs$1 permanent; } 2、修改域名,重启服务
cd /var/namedvim accp.com.zone #把里面的 www 换成 bbs 不然无法解析。systemctl restart nginxsystemctl restart namedecho "nameserver 192.168.111.145" > /etc/resolv.conf3、在浏览器上访问 http://bbs.accp.com/post/a.html ,会帮我们自动跳转 http://www.accp.com/bbs/post/a.html , 此时域名跳转后的参数并没有变还是bbs
3.4、场景四:基于参数匹配跳转
例如:浏览器访问http://www.accp.com/100-(100|200)-100.html,会自动跳转到 http://www.accp.com 的页面。
1、修改nginx的配置文件,添加以下代码
listen 80; server_name www.accp.coom; #charset koi8-r; access_log /var/log/nginx/www.accp.com-access.log main; ## 添加一段 if ($request_uri ~ ^/100-(100|200)-(\d+).html$) { rewrite (.*) http://www.accp.com permanent; }server_name www.accp.com;
if ($request_uri ~ ^/100-(100|200)-(\d+).html$) {
rewrite (.*) http://www.test.com permanent;
}
123456
2、DNS解析www。并重启服务
cd /var/namedvim accp.com.zonesystemctl restart nginxsystemctl restart named3、在浏览器访问 http://www.accp.com/100-100-100.html,就会帮我们自动跳转到www.accp.com网站
3.5、场景五:基于目录下所有php文件跳转
例如,我们访问 http://www.accp.com/upload/1.php,会自动跳转到首页www.accp.com。
1、修改nginx的配置文件,添加以下代码
vim /etc/nginx/conf.d/default.conf listen 80; server_name www.accp.coom; #charset koi8-r; access_log /var/log/nginx/www.accp.com-access.log main;## 添加 location ~* /upload/.*\.php$ { rewrite (.+) http://www.accp.com permanent; }2、重启服务
systemctl restart nginx3、在浏览器上访问 http://www.accp.com/upload/1.php ,就会帮我们自动跳转到 www.accp.com网页。
域名
服务
场景
文件
配置
地址
服务器
类型
公司
参数
浏览器
表达式
代理
浏览
正则
站点
加一
实验
业务
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云转码服务器租用
hp刀片服务器 管理
魔方还原软件开发
网络安全面临的主要威胁论文
女孩子学的网络技术有前途吗
全球知名软件开发学大学排名
网络安全中数据治理的成效
拆迁软件开发费
三级网络技术用什么语言
免费外网服务器ip地址
一把手分管网络安全
日志服务器和堡垒机的区别
合肥运营网络技术市场报价
网络安全专业大创项目
通信公司服务器配置
曲江租房软件开发
查询话费余额显示服务器无法连接
软件开发相关设备有哪些
知网数据库撤稿后更新
艾特互联网科技
河北统一软件开发服务价格优惠
数据库修改后天密码
制造软件开发设计
e世界服务器地址
阿里云vps服务器
盐城佳盛网络技术有限公司
使命召唤18玩哪个服务器
电源管理软件开发
倩女幽魂手游服务器商店上限
如何查询ip数据库下的网站