登录
首页 >  文章 >  php教程

宝塔面板怎么配置多网卡服务器绑定指定IP_修改Nginx与MySQL配置中的监听地址

时间:2026-05-04 10:08:37 187浏览 收藏

文章小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《宝塔面板怎么配置多网卡服务器绑定指定IP_修改Nginx与MySQL配置中的监听地址》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


宝塔面板、Nginx和MySQL在多网卡环境下默认监听0.0.0.0,存在安全风险,必须手动修改配置绑定内网IP:面板需改init.sh的--bind参数及port.pl;Nginx需修改listen指令;MySQL需设置bind-address并确保用户权限允许内网访问。

宝塔面板怎么配置多网卡服务器绑定指定IP_修改Nginx与MySQL配置中的监听地址

宝塔面板默认只监听 0.0.0.0,多网卡时会暴露在所有网卡上

宝塔安装后,bt 命令启动的面板服务、Nginx 和 MySQL 默认都绑定 0.0.0.0,这意味着只要服务器有多个网卡(比如内网 192.168.1.10、外网 203.203.203.10),面板和数据库就可能从任意网卡被访问——存在安全风险,也违反内网隔离要求。

关键不是“能不能改”,而是必须改:宝塔自身不提供图形化绑定指定 IP 的开关,得手动改配置文件 + 重启服务。

修改宝塔面板监听地址(/www/server/panel/data/port.pl + 防火墙)

宝塔面板的监听 IP 不在 Web 界面里配,而由两个地方控制:端口文件和启动参数。改错一个都会失败。

  • 先确认当前监听状态:netstat -tlnp | grep :8888(假设面板端口是 8888),看到 0.0.0.0:8888 就说明还没绑定指定 IP
  • 编辑端口文件:/www/server/panel/data/port.pl,只保留纯数字端口号(如 8888),不要加 IP 或冒号
  • 真正起作用的是启动命令里的 --bind 参数:编辑 /www/server/panel/init.sh,找到 python main.py 这一行,在末尾加上 --bind=192.168.1.10:8888(替换成你要绑定的内网 IP)
  • 重启面板:bt restart,再用 netstat 检查是否变成 192.168.1.10:8888
  • 别忘了关掉其他网卡的防火墙放行(如外网网卡的 8888 端口):firewall-cmd --permanent --remove-port=8888/tcp(CentOS 7)

Nginx 绑定指定 IP:改 listen 指令,别只改 server_name

server_name 控制的是 HTTP Host 匹配,和监听哪个网卡完全无关。真正决定 Nginx 接收请求的网卡,是 listen 指令的地址部分。

  • 进入站点配置目录:/www/server/panel/vhost/nginx/,编辑对应站点的 conf 文件
  • listen 80; 改成 listen 192.168.1.10:80;;HTTPS 同理:listen 192.168.1.10:443 ssl http2;
  • 如果想让某个站点仅响应内网请求,但又不想改全局 listen,可以加 allow/deny,但这只是应用层过滤,不如直接 bind 到内网 IP 彻底
  • 改完执行:nginx -t && systemctl reload nginx,否则语法错误会导致整个 Nginx 崩溃

MySQL 只监听内网 IP:重点改 bind-address,不是 skip-networking

MySQL 默认开启 skip-networking = 0(即允许 TCP 连接),但 bind-address 决定它听谁的包。设成 127.0.0.1 就只能本地连,设成 0.0.0.0 就全放开——你要的是中间态。

  • 编辑 MySQL 配置:/etc/my.cnf/www/server/mysql/etc/my.cnf,在 [mysqld] 段下添加或修改:bind-address = 192.168.1.10
  • 删掉或注释掉 skip-networking 行(如果存在),否则 MySQL 根本不监听任何 TCP 端口
  • 确保用户权限允许从该 IP 连接:登录 MySQL 执行 SELECT host FROM mysql.user WHERE user='root';,如果是 % 或具体内网 IP 就行;如果是 localhost,得用 CREATE USER 'root'@'192.168.1.10' IDENTIFIED BY 'xxx'; GRANT ALL ...;
  • 重启 MySQL:systemctl restart mysqld,再用 ss -tlnp | grep :3306 确认监听地址已变

多网卡环境里,bind-address 写错 IP(比如写成不存在的地址)、漏改 my.cnf 路径、或权限没同步更新,这三个是最常导致“改了不生效”的原因。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>