0
点赞
收藏
分享

微信扫一扫

nginx地址重写

文章介绍

   在我们的工作中可能因为一些原因导致我们公司网站的域名改变,而用户习惯了之前的域名,我们就需要配置地址重写,那样的话用户访问老域名就会自动跳转到新域名上,增加用户的体验。对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;搜索引擎会收录优化信息;永久重定向跳转使用

实验配置

拓扑图:

nginx地址重写_地址重写

推荐步骤:

  • 在 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)挂载系统光盘

nginx地址重写_centos_02

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)挂载程序光盘

nginx地址重写_nginx_03

[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/

nginx地址重写_centos_04

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)检查文件是否出错

nginx地址重写_地址重写_05

4)启动nginx查看服务运行状态

[root@centos ~]# nginx

nginx地址重写_linux_06

4,在Centos02上安装DNS服务,创建解析域名www.suifeng.com和www.suifeng.com.en以及

1)挂载系统光盘

nginx地址重写_linux_07

[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服务

nginx地址重写_linux_08

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

nginx地址重写_linux_09

[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

nginx地址重写_地址重写_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

nginx地址重写_linux_11

6)启动DNS服务,设置开机自启

[root@centos02 ~]# systemctl start named
[root@centos02 ~]# systemctl enable named

7)客户端测试

nginx地址重写_centos_12

二、配置网站跳转使用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)列出网站根目录数据

nginx地址重写_地址重写_13

2,修改Nginx主配置文件当用户输入cn跳转中文网站输入en跳转到英文网站

1)修改主配置文件

[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf

nginx地址重写_nginx_14

2)重启nginx服务

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3,客户端访问验证

1)客户端访问中文网站

nginx地址重写_地址重写_15

2)客户端访问英文网站

nginx地址重写_nginx_16

4,优化网站跳转

1)修改nginx主配置文件

[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf

nginx地址重写_地址重写_17

2)重启nginx服务

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)访问中文网站

nginx地址重写_centos_18

4)访问英文网站

nginx地址重写_linux_19

三、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

nginx地址重写_centos_20

2)重启nginx服务

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)客户端访问www.suifeng.com.cn返回404错误

nginx地址重写_linux_21

2,通过return实现当用户输入http://www.suifeng.com.en跳转到指定域名www.suifeng.com的网站

1)修改nginx主配置文件

[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf

nginx地址重写_linux_22

2)重启nginx服务

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)输入域名跳转​​www.suifeng.com​​网站

nginx地址重写_nginx_23

3,当用户输入www.suifeng.com.en配后通过break跳出终止地址重写

1)修改nginx主配置文件

[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf

nginx地址重写_centos_24

2)重启nginx

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)验证

nginx地址重写_nginx_25

四、永久重定向应用,当用户输入域名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

nginx地址重写_linux_26

2)重启服务

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)验证301永久重定向

nginx地址重写_nginx_27

2,临时重定向应用,当用户输入域名www.suifeng.com.cn或者www.suifeng.com.en跳转到www.suifeng.com网站

1)修改主配置文件

[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf

nginx地址重写_地址重写_28

2)重启服务

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)验证

nginx地址重写_centos_29

3,laset的应用当用户输入访问www.suifeng.com.cn跳转到www.suifeng.com,当用户输入www.suifeng.com.cn/en跳转到英文网站

1)修改主配置文件

nginx地址重写_地址重写_30

2)重启服务

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)户端访问验证客户端输入域名是www.suifeng.com.cn跳转到www.suifeng.com域名

nginx地址重写_linux_31

4)输入www.suifeng.com.cn/en跳转到英文网站

nginx地址重写_centos_32

4,维护网页跳转,当客户端时测试机192.168.100.30显示页面,非192.168.100.30主机访问报错误

1)修改主配置文件

nginx地址重写_centos_33

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网络访问

nginx地址重写_centos_34

5)100.40网络访问

nginx地址重写_nginx_35

nginx地址重写_centos_36





“博主如有不对请指出,虚心接收指导,感谢!”

举报

相关推荐

0 条评论