文章介绍
在我们的工作中可能因为一些原因导致我们公司网站的域名改变,而用户习惯了之前的域名,我们就需要配置地址重写,那样的话用户访问老域名就会自动跳转到新域名上,增加用户的体验。对nginx不太了解的伙伴可以看下我的另一篇博客nginx部署
详细介绍
Nginx重写功能(Rewrite)由ngx_http_rewrite_module模块提供,可使用正则表达式改变请求的URI,返回重定向地址或内容,并可以根据条件选择适当的配置。
支持if判断用户输入内容匹配条件地址重写;不支持else嵌套到if中循环判断跳转 ;支持set定义环境变量和if结合判断地址重写
跳转的实现方式
rewrite匹配跳转:匹配输入内容永久地址跳转
if配置全局环境变量地址跳转:set定义环境变量 if判断环境变量是否匹配,匹配地址跳转
域名或者参数字符匹配:网站动静分离地址重写 页面临时故障配置参数字符匹配地址重写 网站临时故障给用户反馈错误提示
重写类型
last:地址重写成功
break:匹配后跳出这则表达式
redirect:临时地址重写 ;http请求状态码为302 ;搜索引擎不会收录优化信息;网站临时故障做地址重写
permanent:永久重定向;http请求状态码为301;搜索引擎会收录优化信息;永久重定向跳转使用
实验配置
拓扑图:
推荐步骤:
- 在 Centos01 上安装安装 Nginx,设置网站根目录/www 使用域名 www.suifeng.com 访问,Cent02 上安装 DNS 服务解析 www.suifeng.com 和 www.suifeng.com.cn 以及 www.suifeng.com.en 域名
- 配置网站跳转使用if和set判断,判断用户输入域名http://www.suifeng.com/cn跳转到http://www.suifeng.com.cn,判断用户输入域名 http://www.suifeng.com/en 跳转到英文网站 http://www.suifeng.com.en
- return 当 用 输 入 hhttp://www.suifeng.com.cn 给 用 户 提 示 404 错 误 , 通 过 return 实 现 当 用 户 输 入http://www.suifeng.com.cn 跳转到指定域名 www.suifeng.com 的网站,匹配后通过 break 跳出终止地址重写
- 永久重定向应用,当用户输入域名 www.suifeng.com.cn 跳转到 www.suifeng.com 网站,临时重定向应用,当用户输入域名www.suifeng.com.en跳转到www.suifeng.com网站,laset的应用当用户输入访问http://www.suifeng.com/cn返回中文,客户端 IP 地址是 192.168.100.30 提示访问页面,不是 192.168.100.30 访问报错
实验步骤:
一、在Centos01上安装Nginx,设置网站根目录/www使用域名www.suifeng.com访问,Centos02上安装DNS服务解析www.suifeng.com和www.suifeng.com.cn以及 www.suifeng.com.en域名
1,在cenetos01上安装nginx依赖
1)挂载系统光盘
2)挂载系统光盘配置本地yum仓库
[root@centos ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos ~]# ls /mnt
CentOS_BuildTag GPL
LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages
RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata
TRANS.TBL
[root@centos ~]# rm -rf /etc/yum.repos.d/CentOS-*
[root@centos ~]# cat /etc/yum.repos.d/local.repo
[local]
name=centos7
baseurl=file:///mnt
enabled=1
gpgcheck=0
3)安装依赖程序
[root@centos ~]# yum -y install zlib-devel pcre-devel
4)创建管理nginx用户和用户
[root@centos ~]# groupadd nginx
[root@centos ~]# useradd -M -s /sbin/nologin nginx
2,配置安装nginx
1)挂载程序光盘
[root@centos ~]# umount /mnt/
[root@centos ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
2)解压配置nginx
[root@centos ~]# tar zxf
/mnt/nginx-1.6.0.tar.gz -C /usr/src/
[root@centos ~]# cd /usr/src/nginx-1.6.0/
[root@centos nginx-1.6.0]# ./configure
--prefix=/usr/local/nginx //nginx安装位置
--user=nginx //nginx管理用户
--group=nginx //管理组
--with-http_stub_status_module //安装监控模块
3)安装nginx
[root@centos nginx-1.6.0]# make && make install
4)优化命令检查配置文件
[root@centos ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
3,修改nginx网站根目录设置网站主页修改配置文件
1)创建网站根目录
[root@centos ~]# mkdir /www
[root@centos ~]# echo "www.suifeng.com" > /www/index.html
2)修改主配置文件
[root@centos ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type
application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.suifeng.com;
charset utf-8
access_log
logs/www.suifeng.com.access.log;
location / {
root /www;
index index.html index.htm;
}
}
}
3)检查文件是否出错
4)启动nginx查看服务运行状态
4,在Centos02上安装DNS服务,创建解析域名www.suifeng.com和www.suifeng.com.en以及
1)挂载系统光盘
[root@centos02 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# ls /mnt/
CentOS_BuildTag GPL
LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages
RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata
TRANS.TBL
2)安装DNS服务
3)修改DNS主配置文件
[root@centos02 ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.100.20; };
directory "/var/named";
};
zone "suifeng.com" IN {
type master;
file "/var/named/suifeng.com.zone";
};
zone "suifeng.com.en" IN {
type master;
file "/var/named/suifeng.com.en.zone";
};
zone "suifeng.com.cn" IN {
type master;
file "/var/named/suifeng.com.cn.zone";
};
4)检查配置文件是否出错
[root@centos02 ~]# named-checkconf /etc/named.conf
5)修改DNS区域配置文件
[root@centos02 ~]# vim /var/named/suifeng.com.zone
$TTL 86400
@ SOA suifeng.com. root.suifeng.com. (
1234567890
1W
1D
1H
15M
)
@ NS centos02.suifeng.com.
centos02 A 192.168.100.20
www
A 192.168.100.10
[root@centos02 ~]# vim /var/named/suifeng.com.en.zone
$TTL 86400
@ SOA suifeng.com.en.
root.suifeng.com.en. (
1234567890
1W
1D
1H
15M
)
@ NS centos02.suifeng.com.en.
centos02 A 192.168.100.20
www A 192.168.100.10
[root@centos02 ~]# vim /var/named/suifeng.com.cn.zon
$TTL 86400
@ SOA suifeng.com.cn root.suifeng.com.cn. (
1234567890
1W
1D
1H
15M
)
@ NS centos02.suifeng.com.cn
centos02 A 192.168.100.20
www A 192.168.100.10
6)启动DNS服务,设置开机自启
[root@centos02 ~]# systemctl start named
[root@centos02 ~]# systemctl enable named
7)客户端测试
二、配置网站跳转使用if和set判 断,判断用户输入域名http://www.suifeng.com/cn跳转到http://www.suifeng.com.cn,判断用户输入域名http://www.suifeng.com/en跳转到英文网站http://www.suifeng.com.en
1,创建中文网站和英文网站主页
1)创建中文网站根目录
[root@centos ~]# mkdir /www/cn
[root@centos ~]# echo "cn" > /www/cn/index.html
2)创建英文网站根目录
[root@centos ~]# mkdir /www/en
[root@centos ~]# echo "en" > /www/en/index.html
3)列出网站根目录数据
2,修改Nginx主配置文件当用户输入cn跳转中文网站输入en跳转到英文网站
1)修改主配置文件
[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf
2)重启nginx服务
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx
3,客户端访问验证
1)客户端访问中文网站
2)客户端访问英文网站
4,优化网站跳转
1)修改nginx主配置文件
[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf
2)重启nginx服务
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx
3)访问中文网站
4)访问英文网站
三、return当用输入http://www.suifeng.com.cn给用户提示404错误,实现当用户输入www.suifeng.com.en跳转到指定域名 www.suifeng.com的网站
1,通过return当用输入http://www.suifeng.com.cn给用户提示404错误
1)修改nginx主配置文件
[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf
2)重启nginx服务
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx
3)客户端访问www.suifeng.com.cn返回404错误
2,通过return实现当用户输入http://www.suifeng.com.en跳转到指定域名www.suifeng.com的网站
1)修改nginx主配置文件
[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf
2)重启nginx服务
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx
3)输入域名跳转www.suifeng.com网站
3,当用户输入www.suifeng.com.en配后通过break跳出终止地址重写
1)修改nginx主配置文件
[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf
2)重启nginx
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx
3)验证
四、永久重定向应用,当用户输入域名www.suifeng.com.cn跳转到www.suifeng.com网站,临时重定向应用,当用户输入域名www.suifeng.com.en跳转到www.suifeng.com网站,laset的应用当用户输入访问http://www.suifeng.com/cn返回中文,客户端IP地址是192.168.100.30提示访问页面,不是192.168.100.30访问报错
1,永久重定向应用,当用户输入域名www.suifeng.com.cn或者www.suifeng.com.en跳转到 www.suifeng.com网站
1)修改nginx主配置文件
[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf
2)重启服务
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx
3)验证301永久重定向
2,临时重定向应用,当用户输入域名www.suifeng.com.cn或者www.suifeng.com.en跳转到www.suifeng.com网站
1)修改主配置文件
[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf
2)重启服务
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx
3)验证
3,laset的应用当用户输入访问www.suifeng.com.cn跳转到www.suifeng.com,当用户输入www.suifeng.com.cn/en跳转到英文网站
1)修改主配置文件
2)重启服务
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx
3)户端访问验证客户端输入域名是www.suifeng.com.cn跳转到www.suifeng.com域名
4)输入www.suifeng.com.cn/en跳转到英文网站
4,维护网页跳转,当客户端时测试机192.168.100.30显示页面,非192.168.100.30主机访问报错误
1)修改主配置文件
2)创建错误页面
[root@centos ~]# mkdir /www/error/
[root@centos ~]# echo "error" > /www/error/error.html
3)重启服务
[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
[root@centos ~]# nginx
4)100.30网络访问
5)100.40网络访问
“博主如有不对请指出,虚心接收指导,感谢!”