网站限制电脑端访问怎么设置,用的是宝塔面板,只是限制其中的一个网站
要在宝塔面板中限制特定网站仅允许移动端访问(禁止电脑端访问),可以通过添加 Nginx 配置规则实现。以下是具体步骤:
- 登录宝塔面板,找到你要限制的网站,点击 “设置”
- 进入 “配置文件” 选项卡
- 在 server 段中添加以下规则:
# 限制PC端访问
if ($http_user_agent ~* "(Windows NT|Macintosh|X11)") {
# 可以返回403错误
return 403;
# 或者跳转到提示页面
# rewrite ^(.*)$ /pc_not_allowed.html permanent;
}
- 保存配置并重启 Nginx
规则说明:
- 该规则通过检测用户代理(User-Agent)中的关键词来识别 PC 设备
- “Windows NT” 匹配 Windows 系统,”Macintosh” 匹配苹果电脑,”X11″ 匹配 Linux 系统
- 检测到 PC 设备时,默认返回 403 禁止访问错误
- 也可以改为跳转到自定义的提示页面,告知用户该网站仅支持移动端访问
如果需要更精确的判断,可以使用更详细的正则表达式匹配更多 PC 端特征。修改配置后,记得清除浏览器缓存再测试效果。仅限手机
如果是仅限某个ua可以访问呢
# 仅允许User-Agent包含"51"的请求访问
if ($http_user_agent !~* "51") {
# 对于不包含"51"的请求,返回403错误
return 403;
# 或者跳转到提示页面
# rewrite ^(.*)$ /not_allowed.html permanent;
}
这个配置的逻辑是:
- 使用
!~*运算符检查 User-Agent 是否不包含“51”(不区分大小写) - 如果不包含 “51”,则拒绝访问(返回 403)
- 只有当 User-Agent 中包含 “51” 时,才允许继续访问服务器资源
~*表示不区分大小写的匹配,如果需要严格区分大小写,可以使用~代替。
限制仅限iphone手机自带浏览器才可以访问呢
要限制仅限 iPhone 手机自带浏览器(Safari)访问,可以通过检测 User-Agent 中特定的标识来实现。iPhone 自带浏览器的 User-Agent 通常包含iPhone和Safari关键字,同时需要排除其他浏览器(如 Chrome、Firefox 等在 iPhone 上的版本)。
可以使用以下 Nginx 配置:
# 仅允许iPhone自带Safari浏览器访问
if ($http_user_agent !~* "iPhone.*Safari" || $http_user_agent ~* "CriOS|FxiOS") {
return 403; # 不满足条件时返回403禁止访问
}
配置说明:
$http_user_agent !~* "iPhone.*Safari":检查 User-Agent 是否不包含“iPhone” 且后面跟随 “Safari”(不区分大小写)$http_user_agent ~* "CriOS|FxiOS":排除 Chrome for iOS(CriOS)和 Firefox for iOS(FxiOS)- 两个条件用
||连接,表示只要满足其中一个就拒绝访问
这样配置后,只有 iPhone 设备上的原生 Safari 浏览器才能访问,其他设备或浏览器(包括 iPhone 上的其他浏览器)都会被拒绝。
如果需要更精确的控制,还可以考虑添加更多 iPhone Safari 特有的标识,例如:
# 限制访问代码开始初始化变量,默认不允许访问
set $allow 0;
# 检测是否为iPhone设备
if ($http_user_agent ~* "iPhone") {
set $allow "${allow}1";
}
# 检测是否包含Safari标识
if ($http_user_agent ~* "Safari") {
set $allow "${allow}1";
}
# 检测是否为其他浏览器(排除)
if ($http_user_agent !~* "CriOS|FxiOS|EdgiOS|OPiOS") {
set $allow "${allow}1";
}
# 只有三个条件都满足(变量值为0111)才允许访问
if ($allow != "0111") {
return 403;
}
这里增加了AppleWebKit(Safari 的渲染引擎)和EdgiOS(Edge for iOS)的检测,进一步提高准确性。
仅限安卓手机且ua含51的的应用,和iPhone手机自带Safari浏览器才可以访问,
# 默认不允许访问
set $allow 0;
# ====== 条件1: iPhone + Safari 且不是 Chrome/Firefox/Edge/Opera ======
set $cond1 0;
if ($http_user_agent ~* "iPhone") {
set $cond1 "${cond1}1";
}
if ($http_user_agent ~* "Safari") {
set $cond1 "${cond1}1";
}
if ($http_user_agent !~* "CriOS|FxiOS|EdgiOS|OPiOS") {
set $cond1 "${cond1}1";
}
# 只有三个条件同时满足时,$cond1 才是 "0111"
if ($cond1 = "0111") {
set $allow 1;
}
# ====== 条件2: Android + UA 包含 51 ======
set $cond2 0;
if ($http_user_agent ~* "Android") {
set $cond2 "${cond2}1";
}
if ($http_user_agent ~* "51") {
set $cond2 "${cond2}1";
}
# 两个条件同时满足时,$cond2 才是 "011"
if ($cond2 = "011") {
set $allow 1;
}
# ====== 最终判断 ======
if ($allow != 1) {
return 403;
}
判断整个ua是不是有点浪费服务器资源,已知ua含51是倒数20-45位以内,Android 基本在ua前40位即可判断.
# 取 UA 前 40 个字符
set $ua_prefix "";
if ($http_user_agent ~ "^(.{1,40})") {
set $ua_prefix "$1";
}
# 取 UA 最后 45 个字符
set $ua_suffix "";
if ($http_user_agent ~ "(.{1,45})$") {
set $ua_suffix "$1";
}
# 默认不允许访问
set $allow 0;
# ====== 条件1: iPhone + Safari 且不是 Chrome/Firefox/Edge/Opera ======
set $cond1 0;
if ($http_user_agent ~* "iPhone") {
set $cond1 "${cond1}1";
}
if ($http_user_agent ~* "Safari") {
set $cond1 "${cond1}1";
}
if ($http_user_agent !~* "CriOS|FxiOS|EdgiOS|OPiOS") {
set $cond1 "${cond1}1";
}
if ($cond1 = "0111") {
set $allow 1;
}
# ====== 条件2: Android(前40位)+ 包含51(倒数45位内) ======
set $cond2 0;
if ($ua_prefix ~* "Android") {
set $cond2 "${cond2}1";
}
if ($ua_suffix ~* "51") {
set $cond2 "${cond2}1";
}
if ($cond2 = "011") {
set $allow 1;
}
# ====== 最终判断 ======
if ($allow != 1) {
return 403;
}
限制访问,网站配置设置仅限特定ua可以访问













