Nginx地址重写功能

这篇具有很好参考价值的文章主要介绍了Nginx地址重写功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nginx地址重写功能

📒博客主页: 微笑的段嘉许博客主页

💻微信公众号:微笑的段嘉许

🎉欢迎关注🔎点赞👍收藏⭐留言📝

📌本文由微笑的段嘉许原创!

📆CSDN首发时间:🌴2022年2月日21🌴

✉️坚持和努力一定能换来诗与远方!

🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

本文介绍

Nginx的URL重写也被称为Rewrite,主要作用是实现当客户端对特定URL访问的时候,根据客户端的访问信息实现跳转到其他URL处。URL重写在现在的网站中经常常见,比如:
1、对搜索引擎的访问进行优化,利于搜索引擎抓取页面。
2、隐藏站点的真实URL地址,使得URL资源更加简介。
3、当网站升级时,通过URL重写功能,将网站重定向到其他页面。
4、手机和电脑在访问同一站点时,反馈不同的页面,以便使得网站页面使用手机和电脑不同分辨率,使得页面更加美观。

语法:

last 表示完成rewrite,一般在if和server语句中,不终止重写后的url
break 完成本条规则后不在匹配其他的,一般在location中
redirect ==302 返回带有302代码的临时重定向,浏览器地址会显示跳转后的URL地址。
permanent ==301 返回301代码的永久重定向,浏览器地址栏会显示跳转后的URL地址。

redirect和permanent有一定区别,301会将老地址数据带到新地址上,搜索引擎会把老地址彻底废除,302重定性时,搜索引擎会查看跳转前后哪一个地址更直观而自己选择是否跳转,所以会出现网页劫持现象。

📍地址重写的作用和特点📍

作用 特点
修改用户请求内容 通过ngx_http_rewrite_module模块实现
方便用户维护网站 支持if判断用户输入内容匹配条件地址重写
不支持else嵌套到if中循环判断跳转
支持set定义环境变量和if结合判断地址重写

📖实验配置与实现:

拓扑图

nginx rewrite 目录,nginx,搜索引擎,运维

推荐步骤

  • 在Cento01上安装nginx,设置网站根目录/www使用域名www.duanjiaxu.com访问,Centos02上安装DNS服务解析www.duanjiaxu.com和www.duanjiaxu.cn以及www.duanjiaxu.com.en域名
  • 配置网站跳转使用if和set判断,判断用户输入域名http://www.duanjiaxu.com/cn跳转到http://www.duanjiaxu.com.cn,判断用户输入域名http://www.duanjiaxu.com/en跳转到英文网站http://www.duanjiaxu.com.en
  • return当用户输入http://www.duanjiaxu.com.cn给用户提示404错误,通过return实现当用户输入http://www.duanjiaxu.com.cn跳转到指定域名www.duanjiaxu.com的网站,匹配后通过break跳出终止地址重写
  • 永久重定向应用,当用户输入域名www.duanjiaxu.cn跳转到www.duanjiaxu.com网站,临时重定向应用,当用户输入域名www.duanjiaxu.com.en跳转到www.duanjiaxu.com网站,laset的应用当用户输入访问http://www.duanjiaxu.com/cn返回中文,客户端IP地址是192.168.100.30提示访问页面,不是192.168.100.30访问报错

实验步骤

一、在Centos01上安装Nginx,设置网站根目录/www使用域名www.duanjiaxu.com访问,Centos02上安装DNS服务解析www.duanjiaxu.com和www.duanjiaxu.com.cn以及www.duanjiaxu.com.en域名

1、在Centos01上安装nginx服务

1)上传nginx程序包

[root@centos01 ~]# mount /dev/cdrom /mnt/			//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# 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@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-*			//删除系统自带的yum仓库
[root@centos01 ~]# ls /etc/yum.repos.d/			
local.repo
[root@centos01 ~]# cat /etc/yum.repos.d/local.repo 			//查看yum仓库
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@centos01 ~]# rz			//上传nginx源代码程序
z waiting to receive.**B0100000023be50
[root@centos01 ~]# ls			//查看是否上传成功
anaconda-ks.cfg       nginx-1.16.1.tar.gz  模板  图片  下载  桌面
initial-setup-ks.cfg  公共                 视频  文档  音乐

nginx rewrite 目录,nginx,搜索引擎,运维

2)安装nginx依赖程序

[root@centos01 ~]# useradd -M -s /sbin/nologin nginx			//创建nginx用户
[root@centos01 ~]# yum -y install pcre-devel zlib-devel		//安装nginx依赖程序

nginx rewrite 目录,nginx,搜索引擎,运维

3)解压nginx程序包

[root@centos01 ~]# tar zxf ./nginx-1.16.1.tar.gz -C /usr/src/			//解压nginx程序包

4)安装nginx

[root@centos01 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module			//安装模块
[root@centos01 nginx-1.16.1]# make && make install			//编译安装nginx程序
[root@centos01 nginx-1.16.1]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/				//优化命令
[root@centos01 nginx-1.16.1]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

5)创建网站根目录设置网站主页

[root@centos01 ~]# mkdir /www			//创建网站根目录
[root@centos01 ~]# echo "www.duanjiaxu.com" > /www/index.html			//设置网站主页

2、配置IP地址和DNS

1)配置IP地址

[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32			//进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
DNS1=192.168.100.20
---
[root@centos01 ~]# systemctl restart network				//重新启动网卡服务
[root@centos01 ~]# cat /etc/resolv.conf 			//查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

3、修改nginx主配置文件

1)修改主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---
2     user  nginx;			//nginx管理用户
 36     listen      192.168.100.10:80;			//监听的IP地址和端口
 39        charset utf-8;		//支持中文
 44             root   /www/;			//网站根目录
2)使用win10虚拟机验证是否能够正常访问网站
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听端口
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      4193/nginx: master

nginx rewrite 目录,nginx,搜索引擎,运维

4、Centos02上安装DNS服务解析www.duanjiaxu.com和www.duanjiaxu.com.cn以及www.duanjiaxu.com.en域名

1)配置IP地址和DNS

[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32			//进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.20		//IP地址
NETMASK=255.255.255.0		//子网掩码
DNS1=192.168.100.20		//DNS
----
[root@centos02 ~]# systemctl restart network			//重新启动网卡服务
[root@centos02 ~]# cat /etc/resolv.conf 			//查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

nginx rewrite 目录,nginx,搜索引擎,运维

2)挂载系统光盘

[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

3)安装DNS程序包

[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:bind-32:9.9.4-50.el7             ################################# [100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:bind-chroot-32:9.9.4-50.el7      ################################# [100%]

4)修改DNS主配置文件

[root@centos02 ~]# echo "" > /etc/named.conf			//清空主配置文件
[root@centos02 ~]# vim /etc/named.conf				//进入主配置文件
---
options {
        listen-on port 53 { any; };
};
zone "duanjiaxu.com" IN {
        type master;
        file "var/named/duanjiaxu.com.zone";
};
zone "duanjiaxu.com.cn" IN {
        type master;
        file "var/named/duanjiaxu.com.cn.zone";
};
zone "duanjiaxu.com.en" IN {
        type master;
        file "var/named/duanjiaxu.com.en.zone";
};
[root@centos02 ~]# named-checkconf /etc/named.conf			//检查主配置文件是否修改正确

nginx rewrite 目录,nginx,搜索引擎,运维

4)修改第一个DNS区域配置文件

[root@centos02 ~]# vim /var/named/duanjiaxu.com.zone		//进入第一个区域配置文件
---
$TTL            86400
@               SOA             duanjiaxu.com.  root.duanjiaxu.com. (
                2023021310
                1H
                15M
                1W
                1D
)
@               NS              centos02.duanjiaxu.com.
centos02        A               192.168.100.20
www             A               192.168.100.10
---
[root@centos02 ~]# named-checkzone duanjiaxu.com /var/named/duanjiaxu.com.zone 		//查看区域配置文件语法是否有误
zone duanjiaxu.com/IN: loaded serial 2023021310
OK

5)修改第二个DNS区域配置文件

[root@centos02 ~]# cp /var/named/duanjiaxu.com.zone /var/named/duanjiaxu.com.cn.zone			//复制第一个区域配置文件
[root@centos02 ~]# vim /var/named/duanjiaxu.com.cn.zone			//进入第二个区域配置文件
---
:%s/duanjiaxu.com/duanjiaxu.com.cn/g			//把duanjiaxu.com替换为duanjiaxu.com.cn
---
$TTL            86400
@               SOA             duanjiaxu.com.cn.       root.duanjiaxu.com.cn. (
                2023021310
                1H
                15M
                1W
                1D
)
@               NS              centos02.duanjiaxu.com.cn.
centos02        A               192.168.100.20
www             A               192.168.100.10
---
[root@centos02 ~]# named-checkzone duanjiaxu.com.cn /var/named/duanjiaxu.com.cn.zone			//检查配置文件修改是否有误
zone duanjiaxu.com.cn/IN: loaded serial 2023021310
OK

nginx rewrite 目录,nginx,搜索引擎,运维

6)修改第三个DNS区域配置文件

[root@centos02 ~]# cp /var/named/duanjiaxu.com.zone /var/named/duanjiaxu.com.en.zone			//复制第一个区域配置文件
[root@centos02 ~]# vim /var/named/duanjiaxu.com.en.zone			//进入第三个区域配置文件
---
:%s/duanjiaxu.com/duanjiaxu.con.en/g				//把duanjiaxu.com替换为duanjiaxu.com.en
---
$TTL            86400
@               SOA             duanjiaxu.con.en.       root.duanjiaxu.con.en. (
                2023021310
                1H
                15M
                1W
                1D
)
@               NS              centos02.duanjiaxu.con.en.
centos02        A               192.168.100.20
www             A               192.168.100.10
---
[root@centos02 ~]# named-checkzone duanjiaxu.com.en /var/named/duanjiaxu.com.en.zone
zone duanjiaxu.com.en/IN: loaded serial 2023021310
OK

nginx rewrite 目录,nginx,搜索引擎,运维

7)重新启动DNS服务

[root@centos02 ~]# systemctl restart named		//重新启动DNS服务
[root@centos02 ~]# netstat -anptu | grep named		//监听网卡
tcp        0      0 192.168.100.20:53       0.0.0.0:*               LISTEN      41066/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      41066/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      41066/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      41066/named         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           41066/named         
udp        0      0 192.168.100.20:53       0.0.0.0:*                           41066/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           41066/named  

8)客户端测试DNS服务器

nginx rewrite 目录,nginx,搜索引擎,运维

9)使用win10虚拟机验证第一个nginx网站是否能够正常访问

nginx rewrite 目录,nginx,搜索引擎,运维

二、配置网站跳转使用if和set判断,判断用户输入域名http://www.duanjiaxu.com/cn跳转到http://www.duanjiaxu.com.cn,判断用户输入域名http://www.duanjiaxu.com/en跳到英文网站http://www.duanjiaxu.com.en

1、创建中文网站和英文网站设置主页

1)创建中文网站根目录

[root@centos01 ~]# mkdir /www/cn			//创建中文网站根目录
[root@centos01 ~]# echo "cn" > /www/cn/index.html			//设置网站主页

2)创建英文网站根目录

[root@centos01 ~]# mkdir /www/en			//创建英文网站根目录
[root@centos01 ~]# echo "en" > /www/en/index.html			//设置网站主页

3)列出网站根目录数据

[root@centos01 ~]# ls -R /www/			//循环列出网站根目录
/www/:
cn  en  index.html

/www/cn:
index.html

/www/en:
index.html

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

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
---
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.cn;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.cn.access.log;
        location / {
            set $language 'cn';
            rewrite ^/$ http://www.duanjiaxu.com/$language;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.en;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            set $language 'en';
            rewrite ^/$ http://www.duanjiaxu.com/$language;
        }
    }
}
---
[root@centos01 ~]# nginx -t				//检查主配置文件修改是否有误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2)重新启动nginx服务

[root@centos01 ~]# killall nginx				//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx				//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      44007/nginx: master 

3、客户端验证访问

1)客户端访问中文网站

nginx rewrite 目录,nginx,搜索引擎,运维

2)客户端访问英文网站

nginx rewrite 目录,nginx,搜索引擎,运维

4、优化网站跳转

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
---
user  nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.cn www.duanjiaxu.com.en;
        charset  utf-8;
        #access_log  logs/www.duanjiaxu.com.cn.access.log;
        location / {
            if ($http_host ~ (cn)$) {
            set $language 'cn';
            rewrite ^/$ http://www.duanjiaxu.com/$language;
        }
            if ($http_host ~ (en)$) {
            set $language 'en';
            rewrite ^/$ http://www.duanjiaxu.com/$language;
    }
   }
 }
}
2)重新启动nginx服务
[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      44357/nginx: master 

3)访问中文网站

nginx rewrite 目录,nginx,搜索引擎,运维

4)访问英文网站

nginx rewrite 目录,nginx,搜索引擎,运维

三、return当用户输入http://www.duanjiaxu.com.cn给用户提示404错误,通过return实现当用户输入http://www.duanjiaxu.com.cn跳转到指定域名www.duanjiaxu.com的网站,匹配后通过break跳出终止地址重写

1、通过return当用户输入http://www.duanjiaxu.com.cn给用户提示404错误

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
---
user  nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.cn;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            if ($http_host = "www.duanjiaxu.com.cn") {
            return 404;
         }
       }
     }
   }
[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听nginx网卡服务
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      46316/nginx: master

nginx rewrite 目录,nginx,搜索引擎,运维

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

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
---
user  nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.en;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            if ($http_host = "www.duanjiaxu.com.en") {
            rewrite ^/$ http://www.duanjiaxu.com;
         }
       }
     }
   }
[root@centos01 ~]# killall nginx
nginx: no process found
[root@centos01 ~]# nginx
[root@centos01 ~]# netstat -anptu | grep nginx
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      46435/nginx: master

2)输入www.duanjiaxu.com.en跳转到www.duanjiaxu.com

nginx rewrite 目录,nginx,搜索引擎,运维

3、当用户输入www.duanjiaxu.com.en匹配后通过break跳出地址重写

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
---
user  nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.en;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            if ($http_host = "www.duanjiaxu.com.en") {
            break;
            rewrite ^/$ http://www.duanjiaxu.com;
         }
       }
     }
   }
[root@centos01 ~]# killall nginx
nginx: no process found
[root@centos01 ~]# nginx
[root@centos01 ~]# netstat -anptu | grep nginx
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      46507/nginx: master

2)验证

nginx rewrite 目录,nginx,搜索引擎,运维

四、永久重定向应用,当用户输入域名www.duanjiaxu.com.cn跳转到www.danjiaxu.con网站,临时重定向应用,当用户输入域名www.duanjiaxu.com.en跳转到www.duanjiaxu.com网站,laset的应用当用户输入访问http://www.duanjiaxu.com/cn返回中文,客户端IP地址是192.168.100.30提示访问页面,不是192.168.100.30访问报错

1、永久重定向应用,当用户输入域名www.duanjiaxu.com.cn或者www.duanjiaxu.com.en跳转到www.duanjiaxu.com网站

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
---
user  nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.cn www.duanjiaxu.com.en;
        charset  utf-8;
        #access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            rewrite ^/$ http://www.duanjiaxu.com permanent;			//永久重定向到www.duanjiaxu.com
  }
 }
}
---
[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx				//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听nginx网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      44963/nginx: master

2)在win10虚拟机使用抓包软件访问验证(301永久重定向)

nginx rewrite 目录,nginx,搜索引擎,运维

nginx rewrite 目录,nginx,搜索引擎,运维

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

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
---
user  nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.cn www.duanjiaxu.com.en;
        charset  utf-8;
        #access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            rewrite ^/$ http://www.duanjiaxu.com redirect;			//临时重定向到www.duanjiaxu.com
  }
 }
}
---
[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听nginx网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      45273/nginx: master

2)在win10虚拟机使用抓包软件访问验证(302临时重定向)

nginx rewrite 目录,nginx,搜索引擎,运维

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

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
---
user  nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com.cn;
        charset  utf-8;
        #access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            if ($http_host ~* (cn)$) {
            rewrite ^/$ http://www.duanjiaxu.com last;
  }
        location /en {
        root /www/en/;
        index index.html index.html;
        }
     }
   }
}
---
[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听nginx网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      45524/nginx: master 

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

nginx rewrite 目录,nginx,搜索引擎,运维

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

nginx rewrite 目录,nginx,搜索引擎,运维

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

1)新建错误页面

[root@centos01 ~]# mkdir /www/error			//创建错误页面根目录
[root@centos01 ~]# echo "error" > /www/error/error.html			//设置错误页面主页
[root@centos01 ~]# ls -R /www/				//查看
/www/:
cn  en  error  index.html

/www/cn:
index.html

/www/en:
index.html

/www/error:
error.html
2)修改nginx主配置文件
user  nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset  utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;
        location / {
            root   /www;
            index  index.html index.htm;
            set $rewrite true;
            if ($remote_addr = "192.168.100.30") {
            set $rewrite fales;
        }
            if ($rewrite = true) {
            rewrite (.+) /error.html;
        }
        location =/error.html {
                root /www/error/;
}
}
}
}
---
[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      46134/nginx: master

2)非192.168.100.30主机访问提示错误

nginx rewrite 目录,nginx,搜索引擎,运维

3)是192.168.100.30主机访问显示主页

nginx rewrite 目录,nginx,搜索引擎,运维


🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

nginx rewrite 目录,nginx,搜索引擎,运维文章来源地址https://www.toymoban.com/news/detail-745365.html

到了这里,关于Nginx地址重写功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx Rewrite 重写跳转

    rewrite功能: 使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。 比如: 更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。 rewrite只能放在server{},location{},if{}中,并且默

    2024年02月11日
    浏览(31)
  • Nginx快速入门:return、rewrite重定向、重写详解(六)

    我们在日常的生产过程中,常常有需要重定向转发的需求,比如企业更换了域名,但又要保证之前的域名能访问,这就需要做重定向的跳转。 我们在之前的章节中学习了Nginx的负载均衡、各类转发代理配置,今天继续来补充关于转发的的最后一个环节——重定向(或称跳转)

    2024年02月20日
    浏览(31)
  • Nginx正则表达式、location匹配、Rewrite重写详解

    ^ 匹配输入字符串的起始位置 $ 匹配输入字符串的结束位置 * 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” + 匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o” ? 匹配前面的字符零次或一次,例如“do(es)?”能匹配“

    2024年02月07日
    浏览(76)
  • Linux服务——nginx重写功能与反向代理

    目录 一、nginx重写功能 if指令  return指令 set指令 break指令 rewrite指令 防盗链 二、反向代理 反向代理参数 反向代理——缓存功能 反向代理——ip穿透 反向代理——动静分离 反向代理——负载均衡 Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCR

    2024年02月10日
    浏览(28)
  • Nginx深入:nginx功能模块、目录结构及配置文件详解

    1、Nginx 核心功能模块(Core functionality) Nginx核心功能模块负责Nginx的全局应用,主要对应主配置文件的核心层(Main层)和事件(Events)层,这里有很多 Nginx 必需的全局参数配置。 有关核心功能模块的官方文档为:http://nginx.org/en/docs/ngx_core_module.html 2、标准的 HTTP 功能模块集合

    2024年02月14日
    浏览(34)
  • Nginx服务之Rewrite

    目录 一、Rewrite实际场景 1、Nginx跳转需求的实现方式 2、rewrite放在server{},if{}, location{}段中 3、对域名或参数字符串 二、Nginx 正则表达式 三、Rewrite命令 四、Location 分类 1、分类  2、正则匹配的常用表达式 3、location 优先级 4、Nginx在实际网站中至少有三个匹配规则定义 4.1第

    2024年02月14日
    浏览(30)
  • 8.Nginx Rewrite

    从功能看rewrite和location似乎有点像,都能实现跳转。 主要区别在于rewrite是在同一域名内更改获取资源的路径,而location是对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器 rewrite对访问的域名或者域名内的URL路径地址重写 location对访问的路径做访问控制或者代理转

    2024年02月08日
    浏览(27)
  • Nginx Rewrite详解

    目录 一、Rewrite跳转场景 二、Rewrite跳转实现 三、Rewrite实际场景 1.nginx跳转需求的实现方式: 2.rewrite放在server{},if{},location{}段中 3.对域名或参数字符串 四、Rewrite正则表达式 五、Rewrite命令/语法格式 六、Location分类 1. location 大致可以分为三类: 2.location 常用的匹配规则:

    2024年02月07日
    浏览(31)
  • Nginx Rewrite的应用

    目录 一、Nginx Rewrite 二、Rewrite的功能  1.Rewrite  跳转场景 2.Rewrite  跳转实现 3.Rewrite  实际场景 4.Rewrite  正则表达式 5.Rewrite  命令/语法格式 6.location  分类 7.location  优先级 8.Rewrite和location比较 9.根据以上了解,小案例来操作实现我们在企业跳转案例 三、Rewrite  跳转场景

    2024年02月12日
    浏览(38)
  • 【Nginx】rewrite简单使用

    没有对正式的rewrite进行了解,为了能快速了解它是干嘛怎么用,找了一些有例子的博客进行简单学习了一下;由于每次看的间隔有点大,老忘记,这回专门写个超级快速理解的例子。 PS:下面的解释可能会不太对,大佬们可以分享一下正确说法;如果用法都有错了,请诸位指

    2024年02月15日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包