让代码更简单

Nginx规则屏蔽所有网页只留维护页面

重要:本文最后更新于2020-01-10 08:28:00,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

今天某大佬网站被查封整改,要求关掉所有页面,只留下一个维护页面。问如何利用Nginx规则屏蔽所有网页只留维护页面?下面提供Nginx服务器下的实现规则,规则很简单,为了方便大家理解,先讲讲Nginx的匹配规则。

先看看下面的标识符

标识符 描述
= 精确匹配;用于标准uri前,要求请求字符串和uri严格匹配。如果匹配成功,就停止匹配,立即执行该location里面的请求。
~ 正则匹配;用于正则uri前,表示uri里面包含正则,并且区分大小写。
~* 正则匹配;用于正则uri前,表示uri里面包含正则,不区分大小写。
^~ 非正则匹配;用于标准uri前,nginx服务器匹配到前缀最多的uri后就结束,该模式匹配成功后,不会使用正则匹配。
普通匹配(最长字符匹配);与location顺序无关,是按照匹配的长短来取匹配结果。若完全匹配,就停止匹配。

使用方法

“=”精准匹配案例

复制
location = /login {
# 精确匹配 /login ,匹配成功后,立即结束
}

“~”区分大小写正则匹配案例

复制
location ~ /images/ {
#正则匹配,区分大小写,匹配成功后,立即结束
}

“~*”不区分大小写正则匹配案例

复制
location ~* /images/ {
#正则匹配,不区分大小写,匹配成功后,立即结束
}

“^~” 不进行正则匹配的标准匹配

复制
location ^~ /images/ {
# 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
}

普通匹配(最长字符匹配)

复制
location /blog/ {
# 与location顺序无关
# 若完全匹配成功,就不在继续匹配,否则还会进行正则匹配
}

匹配顺序如下:

(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (location /)

(精确匹配)> (最长字符串匹配,但完全匹配) >(非正则匹配)>(正则匹配)>(最长字符串匹配,不完全匹配)>(location通配)

结合上文的使用规则,假设仅允许访问/login页面,其它所有页面全部404,则使用下面规则,

由于/login页面是伪静态后的地址,所有要为 /login 页面提供伪静态规则,否则会404

复制
location = /login {
try_files $uri $uri/ /index.php?$args;
}

如果是wordpress你还需要加上这一句,写到括号外就行了。

复制
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

然后所有页面返回404;

复制
location / {
return 404;
}

如果没有使用伪静态的地址,使用下面的规则

复制
location = /login {
//地址随便换
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location / {
return 404;
}

感觉很棒!可以赞赏支持我哟~

0 打赏
感谢 1人打赏0.1元

评论 (5)

登录后评论
同样收到过警告邮件,吓死了
不用这么麻烦,直接在 functions.php 中添加一个维护模式:

//维护模式
function maintenance_mode()
{
if (!current_user_can('edit_themes') || !is_user_logged_in()) {
wp_die('网站备案中...', '网站备案中...', array('response' => '503'));
}
}
add_action('get_header', 'maintenance_mode');

这样只有管理员可见,多简单!
可惜别人的要求是留下一个页面,其它的屏蔽呀。
这样对外是有一个简单的维护页面,管理员可正常访问全部!
贼复杂,直接装一个维护插件就行了。还可以设置哪些用户可以正常查看。
QQ咨询 邮件咨询 狗哥推荐