摘要
上周,弟兄新项目需要拓展网络服务器,以提供更强的服务。但由于一些功能需要临时屏蔽,我必须将nginx跳转到服务器维护网页页面。虽然跳转不难,但我还是有些紧张。幸好,一切顺利,静态网页也很快加载。
正文
Nginx 跳转到服务器维护网页页面
上个星期弟兄新项目提前准备拓展网络服务器便于给予更强的服务项目,弟兄新项目有一些作用是即时给予到我这边的,必须我这边临时把相匹配系统功能屏蔽掉,由于应用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,差别得话自身搜集资料)。
不清楚大家是否有发觉,之上2个事例中,全是用 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后边务必要有一个空格符!!!!,真坑了,在网上这些详细介绍nginx if的文章内容也没有提及那么关键的信息内容。。。
谢谢材料:
if后务必有空格符:https://blog.csdn.net/palet/article/details/103394236
nginx中return和rewrite:https://blog.csdn.net/u010982507/article/details/104025717
关注不迷路
扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!
评论0