侧边栏壁纸
博主头像
zyixin

当你觉得为时已晚的时候,恰恰是最早的时候

  • 累计撰写 64 篇文章
  • 累计创建 0 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

地址重写

zyixin
2022-04-01 / 0 评论 / 0 点赞 / 1,704 阅读 / 2,273 字
温馨提示:
本文最后更新于 2022-04-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

地址重写(重定向)

问题

通过调整Nginx服务端配置,实现以下目标;
1.所有访问a.html的请求,重定向到b.html;
2.所有访问192.168.4.5的请求重定向至 www.tmooc.cn;
3.所有访问192.168.4.5/下面子页面,重定向至 www.tmooc.cn/ 下相同的页面;
4.实现firefox与curl访问相同页面文件,返回不同的内容;

方案

关于Nginx服务器的地址重写,主要用到的配置参数是rewrite:
**·**rewrite regex replacement flag
**·**rewrite 旧地址 新地址 [选项]

步骤

步骤一:修改配置文件(访问a.html重定向到b.html)
1)修改Nginx服务配置:

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
        listen       80;
        server_name  localhost;
        rewrite /a.html /b.html;

        location / {
            root   html;
            index  index.html index.htm;
        }
}
[root@proxy ~]# echo "BB" > /usr/local/nginx/html/b.html

2)重新加载配置文件

[root@proxy ~]# /usr/local/nginx/sbin/nginx  -s  reload

3)客户端测试

[root@client ~]# firefox  http://192.168.4.5/a.html

步骤二:访问a.html重定向到b.html(跳转地址栏)
1)修改Nginx服务配置:

·· ··
server {
        listen       80;
        server_name  localhost;
        rewrite /a.html /b.html redirect;

        location / {
            root   html;
            index  index.html index.htm;
        }
}

2)重新加载配置文件

[root@proxy ~]# /usr/local/nginx/sbin/nginx  -s  reload

3)客户端测试

[root@client ~]# firefox  http://192.168.4.5/a.html

步骤三:修改配置文件(访问192.168.4.5的请求重定向至 www.baidu.com )

  1. 修改Nginx服务配置
·· ··
server {
        listen       80;
        server_name  localhost;
        rewrite ^/ http://www.baidu.com/;

        location / {
            root   html;
            index  index.html index.htm;
        }
}

2)重新加载配置文件

[root@proxy ~]# /usr/local/nginx/sbin/nginx  -s  reload

3)客户端测试

[root@room9pc01 ~]# firefox  http://192.168.160.5

步骤四:修改配置文件(访问192.168.4.5/下面子页面,重定向至 www.tmooc.cn/ 下相同的页面)

  1. 修改Nginx服务配置
·· ··
server {
        listen       80;
        server_name  localhost;
       rewrite ^/(.*)$ http://www.tmooc.cn/$1;

        location / {
            root   html;
            index  index.html index.htm;
        }
}

2)重新加载配置文件

[root@proxy ~]# /usr/local/nginx/sbin/nginx  -s  reload

3)客户端测试

[root@room9pc01 ~]# firefox  http://192.168.160.5
[root@room9pc01 ~]# firefox  http://192.168.160.5/test

步骤五:修改配置文件(实现curl和火狐访问相同链接返回的页面不同)

  1. 创建网页目录以及对应的页面文件:
[root@proxy ~]# echo "I am Normal page" > /usr/local/nginx/html/test.html

[root@proxy ~]# mkdir  -p  /usr/local/nginx/html/firefox/
[root@proxy ~]# echo "firefox page" > /usr/local/nginx/html/firefox/test.html
  1. 修改Nginx服务配置
·· ··
server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        #这里,~符号代表正则匹配,*符号代表不区分大小写
        if ($http_user_agent ~* firefox) {        #识别客户端firefox浏览器
           rewrite ^(.*)$ /firefox/$1;
        }
}

3)重新加载配置文件

[root@proxy ~]# /usr/local/nginx/sbin/nginx  -s  reload

4)客户端测试

[root@client ~]# firefox  http://192.168.160.5/test.html
[root@client ~]# curl     http://192.168.160.5/test.html

·


###[地址重写格式]
rewrite 旧地址 新地址 [选项];

last 不再读其他rewrite

break 不再读其他语句,结束请求

redirect 临时重定向

permament 永久重定向

0

评论区