可在宝塔面板中通过三种方式动态生成Nginx配置:一、读取并替换模板文件占位符;二、调用宝塔Python API执行make_site;三、通过Web API发送POST请求创建站点。

如果您希望在宝塔面板中跳过手动配置Nginx站点的过程,直接通过PHP脚本动态生成符合宝塔规范的Nginx配置文件,则需利用宝塔提供的配置模板结构与路径规则。以下是实现该目标的具体步骤:
一、读取宝塔内置Nginx配置模板并填充变量
宝塔面板的Nginx站点配置基于固定模板文件(如 /www/server/panel/vhost/nginx/0.default.conf),脚本可通过读取模板内容,替换占位符(如域名、根目录、PHP版本)生成新配置。此方法依赖宝塔标准模板格式,无需调用API,兼容性高。
1、使用file_get_contents()读取模板文件路径 /www/server/panel/vhost/nginx/0.default.conf。
2、将模板中的 {domain} 替换为实际域名,{root_path} 替换为网站根目录绝对路径,{php_version} 替换为具体PHP版本号(例如 php-74)。
立即学习“PHP免费学习笔记(深入)”;
3、调用 str_replace() 逐项替换所有占位符,确保 域名必须为完整FQDN(如 example.com),根目录路径末尾不能带斜杠。
4、使用 file_put_contents() 将生成内容写入 /www/server/panel/vhost/nginx/example.com.conf。
二、调用宝塔Python API生成配置
宝塔5.9+版本提供Python接口 /www/server/panel/class/nginx.py,可直接调用其方法生成合规配置。该方式绕过模板编辑,由面板核心逻辑生成,能自动处理SSL、伪静态、反向代理等扩展项。
1、在PHP脚本中执行 shell_exec("python /www/server/panel/class/nginx.py make_site 'example.com' '/www/wwwroot/example.com' 'php-74'")。
2、确认返回值是否包含 success 字样,若返回空或含 error,需检查 /www/server/panel/class/nginx.py 文件是否存在且有执行权限。
3、生成后立即执行 shell_exec("nginx -t && systemctl reload nginx") 验证并重载配置。
三、通过宝塔Web API提交配置创建请求
启用宝塔面板API功能后,可通过HTTP POST请求向 /api/website/create_site 接口提交JSON数据,由面板后台自动生成Nginx配置文件。此方式适合远程调用或集成到第三方系统。
1、在宝塔面板设置中开启API,并记录API密钥与绑定IP白名单。
2、在PHP脚本中构造数组:$data = ['site_name'=>'example.com', 'path'=>'/www/wwwroot/example.com', 'php_version'=>'74'],并使用 curl_init() 发送POST请求至 https://服务器IP:8888/api/website/create_site。
3、设置请求头包含 X-Signature 和 Content-Type: application/json,X-Signature 必须为 API密钥 + 时间戳 + 请求体MD5三者拼接后再次MD5。
4、解析响应JSON,检查 code 值是否为 0,确认配置文件已生成于 /www/server/panel/vhost/nginx/ 目录下。











