openresty nginx 设置网络白名单进行nacos站点访问控制
1、 html目录下新建 403page.html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1, minimum-scale=1, width=device-width" />
<title>Not allowed to visit this website - kuojungwong@sina.cn</title>
<style> *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:480px;min-height:180px;padding:30px 0 15px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}@media screen and (max-width:772px){body{background:0;margin-top:0;max-width:none;padding-right:0}}</style>
</head>
<body>
<p><ins>403 禁止访问</ins> <b>为避免系统异常,你的IP不在服务器访问白名单内,<br>(127|154)<br>请联系项目小组成员kuojungwong进行访问修改</b></p>
<p><ins>403 Forbidden</ins> <b>Not allowed to visit this website</b></p>
<p>This website only allows users inside the network to visit.</p>
<p>We are sorry for the inconvenience.</p>
<p><ins>© 2021 <a href="#1">kuojungwong@sina.cn </a></ins></p>
</body>
</html>
2、方式1,仅允许白名单内IP访问
location /nacos/ {
if ($remote_addr !~ ^(10.0.0.155|127.0.0.1) )) {return 403;}
proxy_pass http://nacosserv;
}
error_page 403 /403page.html;
location = /403page.html{
root html;
}
3、方式2,允许白名单内IP 或者 绑定的域名进行访问
首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:
and or 都不被支持
if ($remote_addr ~ "^(12.34|56.78)" || $host = "2021.kuojungwong.cococ") {
return 403;
}
实际代码为使用变量进行控制
location /nacos/ {
set $flag 0;
if ($remote_addr !~ ^(10.0.0.155|127.0.0.1)) {set $flag 1;}
if ($host = "2021.kuojungwong.cococ") {set $flag 0;}
if ($flag = 0) {return 403;}
proxy_pass http://nacosserv;
}
error_page 403 /403page.html;
location = /403page.html{
root html;
}
4、实际拦截效果图
5、其他内容
If判断条件
#1、正则表达式匹配:
==:等值比较;
~:判断匹配与否时区分字符大小写;
~*:判断匹配与否时不区分字符大小写;
!~:与指定正则表达式模式不匹配时返回“真”,判断匹配与否时区分字符大小写;
!~*:与指定正则表达式模式不匹配时返回“真”,判断匹配与否时不区分字符大小写;
#2、文件及目录匹配判断:
-f, !-f:判断指定的路径是否为存在且为文件;
-d, !-d:判断指定的路径是否为存在且为目录;
-e, !-e:判断指定的路径是否存在,文件或目录均可;
-x, !-x:判断指定路径的文件是否存在且可执行;