配置nginx 重定向到系统维护页面


Posted in Servers onJune 08, 2021

上周末兄弟项目准备扩展服务器以便提供更好的服务,兄弟项目有一些功能是实时提供到我这边的,需要我这边暂时把对应系统功能屏蔽,因为使用nginx,所以可以直接配置nginx重定向到固定系统维护页面。

nginx重定向其实很简单,用return或rewrite关键字均可,因为重定向后直接跳转到静态页面,不需要后续操作和记录,所以直接301永久重定向。

其中重定向既可以在server中配置,也可以在具体的location中配置,下面分别简单介绍。

在server中配置:

http {
    server{
        listen 80;
        server_name A.com;

     # 以下return 或 rewrite 选择其中一个就行。其中upgrade.html 是自己写的提示页面
        return 301 http://B.com/upgrade.html;  
        # rewrite ^/(.*)$ http://B.com/upgrade.html permanent;
        location / {          # 此处省略后面配置内容     }  } }

或者在location中配置:

http {
    server{
        listen 80;
        server_name A.com;
        location / {
            rewrite ^/(.*)$ http://B.com/upgrade.html permanent;
           # 此处省略后面配置内容     }  } }

从以上实例看出,return用301参数重定向,rewrite用permanent(当然还可以用break,last,区别的话自己查资料)。

不知道你们有没有发现,以上两个例子中,都是用 A.com去重定向到 B.com ,我试过,用A.com直接重定向到A.com/upgrade.html,会报错重复次数太多,也就是进入死循环。在同时管理多个域名是可以配置用A重定向B,但是如果只有一个域名A那怎么弄呢?

这时候就用到if条件判断了,此处我们以在server中配置为例说明:

http {
    server{
        listen 80;
        server_name A.com;        

        # 注意 if 后面必须有一个空格!!!
        if ($request_uri !~ "/upgrade.html$") {
            return 301 http://A.com/upgrade.html;
        }

        location / {
          # 此处省略后面配置内容
     }
   } 
}

以上实例说明,当访问路径不包含 /upgrade.html时就重定向到upgrade.html,此时能够重定向,不会再有重复次数太多的提示,但有另一个问题,就是upgrade.html中的图片无法显示了,暂时没时间去研究如何避免图片被重定向了,后面有时间再补充。

测试if条件的时候,遇到一个特别坑的事,就是添加if后重启nginx报错:

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

输入systemctl status nginx.service可查看错误信息,其中nginx: [emerg] unknown directive "if($request_uri"错误查找到答案,原来是if后面必须要有一个空格!!!!,太坑了,网上那些介绍nginxif的文章都没有提到这么重要的信息。。。

感谢资料:

if后必须有空格:https://blog.csdn.net/palet/article/details/103394236

nginx中return和rewrite:https://blog.csdn.net/u010982507/article/details/104025717

知识点补充

配置nginx输入任何地址都跳转至维护页面

笔记一下:配置nginx输入任何地址都跳转至维护页面

server {
    listen 80;
    root /xxx/xxx/src;
    index index.html index.htm;

    server_name test.xxx.com;

    set $flag 0;
      if ($request_uri !~ "(/static/.*)$"){
          set $flag "${flag}1";
      }
      if ($request_uri !~ "/502.html$" ){
          set $flag "${flag}2";
      }
      if ($flag = "012") {
         rewrite ^(.*) http://test.xxx.com/502.html permanent;
      }

 location /{
     ...

以上就是nginx 重定向到系统维护页面的详细内容,更多关于nginx重定向维护页面的资料请关注三水点靠木其它相关文章!

Servers 相关文章推荐
nginx配置proxy_pass中url末尾带/与不带/的区别详解
Mar 31 Servers
Nginx本地目录映射实现代码实例
Mar 31 Servers
Nginx工作原理和优化总结。
Apr 02 Servers
Nginx配置文件详解以及优化建议指南
Sep 15 Servers
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
Feb 12 Servers
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
Apr 02 Servers
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
Apr 07 Servers
Window server 2012 R2 AD域的组策略相关设置
Apr 28 Servers
如何Tomcat中使用ipv6地址
May 06 Servers
zabbix配置nginx监控的实现
May 25 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
Flink 侧流输出源码示例解析
Sep 23 Servers
nginx配置文件使用环境变量的操作方法
Jun 02 #Servers
nginx+lua单机上万并发的实现
May 31 #Servers
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
Nginx配置Https安全认证的实现
May 26 #Servers
nginx部署多前端项目的几种方法
Nginx如何配置Http、Https、WS、WSS的方法步骤
May 11 #Servers
You might like
计数器详细设计
2006/10/09 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
videocapture库制作python视频高速传输程序
2013/12/23 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
简单了解Python中的几种函数
2017/11/03 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
python清空命令行方式
2020/01/13 Python
python的pip有什么用
2020/06/17 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
adidas泰国官网:adidas TH
2020/07/11 全球购物
机械电子工程专业推荐信范文
2013/11/20 职场文书
计算机毕业大学生推荐信
2013/12/01 职场文书
开办饭店创业计划书
2013/12/28 职场文书
涨价通知
2015/04/23 职场文书
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis