最近在公司实习,很久没有更新宝塔的插件之类的东西了。今天看到开发者群里面有人说宝塔的API 不会用,这里讲一下怎么调用宝塔面板的API
首先,宝塔面板的API 需要在面板中开启 API 接口功能,并设置API接口的白名单。注意,宝塔的API接口具有控制宝塔系统的全局权限,因此,请妥善保存您的API 并设置面板的白名单地址
有的同学会问了,如果我的中控服务器(调用API 接口的服务器)IP地址经常变化,那要怎么办呢,我不可能总是去修改面板的白名单啊。
在这边给大家一个方案,我们可以使用NGINX 的反向代理功能,反代宝塔面板,从而实现API调用。注意,强烈建议您在使用反代时,启用网址的密码访问的功能。虽然NGINX 的密码访问是基于 HEADER 中的 Auth 字段进行认证,但是能够很大程度上提高程序的安全性。下面给大家逐步演示,如何使用宝塔面板的API
1.cmd 查看,当前开发设备的IP地址为 192.168.220.28 , 宝塔面板的地址为 192.168.220.220
2.配置宝塔面板,启用API 功能,并放行宝塔面板本地服务器调用
3.保存好配置后,我们来编写一个最简单的PHP 文件,PHP 请求面板的 system?action=GetNetWork 接口,获取当前面板的运行的状态信息
运行脚本 , 输出如图所示的响应
这是因为我们的设备不在宝塔的白名单中,那么我们先手动将这个IP加入面板的白名单里面
重新执行脚本,得到正常的响应
接下来演示如何使用NGINX 反代 ,首先删除刚刚的IP白名单,然后面板需要安装NGINX ,这里演示时使用NGINX 1.18 ,在网站中添加一个域名为 192.168.220.210 的 网站,反向代理到本地的宝塔面板
然后我们修改下PHP 的代码 , 请求测试服务器的80端口
可以看到这时面板是正常的响应我们的请求的,那么显然这样是不安全的,我们给这个网站加上一个 Auth 认证
修改好在试试
NGINX 返回了 401 未授权错误 , 我们直接用浏览器访问这个地址 ,输入用户名和密码
观察页面请求发现,使用AUTH 后的页面在header中多了一个