Nginx Rewrite介绍
本章结构



实验步骤;
先在服务器1上写三个location;且等级各不相同;
如下;先将之前的location注释掉,避免冲突;

重启服务后生效;

如果用户输入的域名后只加了一个/或/都没有加;会显示/var/www/html/aaa下的文件;文件为aaa.html;

如果用户输入的后缀为index.html,那将显示/vat/www/html/bbb下的文件;文件为index.html;

如果用户输入的后缀为INDEX.html,那将显示/var/www/html/ccc下的文件,文件为INDEX.html;
然后创建指定的站点目录下的文件;

然后使用客户机进行访问:



匹配的规则会根据最长路径进行匹配location里面的规则;
地址重写;如果web服务器宕机了,就可以地址重写的功能,让其他服务器接管web服务;
实验步骤:
192.168.10.101 server1
192.168.10.102 server2
win11客户机
先在三台主机上的hosts文件写入两台服务器的IP及域名;
192.168.10.101 www.benet.com
192.168.10.102 www.accp.com
然后再server2的上面yum方式装一个apache(httpd)服务,并开启该服务;关闭防火墙及内核安全机制;
进入server1的配置文件写入重写规则;

意思为如果客户机请求的是我本机的url,那么我就给他重写到accp.com的主机上,让它去访问accp.com;且永久跳转;
重启服务后生效;用客户机去验证;
![]()
输入的是nginx服务的域名,但是跳转到了apache服务的主机上了;这就实现了地址重写;

且是301,永久重定向;

那如何实现临时重定向呢???
再次进入配置文件将permanent改为redirect

然后再重启服务,再测试;
此时就变成了临时重定向;

两种都是重定向;有哪些不同呢?
对爬虫软件的影响不同;永久重定向对爬虫没有影响;而临时重定向有影响;就盗取不到服务器的图片,文本,音频,视频了,也就对服务器的资源造成不了影响了。
第二种重写,域名的重写,不跳转到其他服务器了,直接重写成其他服务器,自己指向自己;
应用场景;如果我更换了一个域名,但还不想让客户进行访问;
与这个写法一样,只需要把域名更换了就好,后面至于永久还是临时,视情况而定;
依旧重启服务后生效;

应用场景;如果服务器需要维护,让外网的用户跳转到报错页面,内网的工作人员正常访问,进行维护;
win11作为内网客户机正常访问;
192.168.10.103作为外网客户端跳转到维护页面;
允许192.168.10.200这个主机进行访问,其他的全部跳转到报错页面;


进入到nginx的站点目录下创建出指定的文件,并写入相应语句!

重启服务后用制定的内网主机及外网主机进行访问;


如何实现新老域名的跳转?
如果有一个域名为bbs.benet.com/post又申请了一个新的域名,想让用户跳转到www.benet.com/bbs/post
进入主配置文件添加相应语句:
将之前写的语句,全都注释掉,避免冲突;

然后在指定的目录下创建目录文件及索引文件;

然后重启服务,并进入到win11的系统的hosts文件加上新的域名的内容;
这样win11的系统中一个IP就对应了两个域名;

然后验证:




































