需用firewalld永久放行http和https服务并重载:执行sudo firewall-cmd --permanent --add-service=http --add-service=https,再sudo firewall-cmd --reload;验证用firewall-cmd --list-services应显示二者。
linux 上运行 apache http server 时,若系统启用了 firewalld(如 centos/rhel 8+、fedora、alibaba cloud linux 等),默认会拦截外部对 80(http)和 443(https)端口的访问。必须显式放行对应服务,web 才能被公网或局域网正常访问。
确认 firewalld 正在运行
执行以下命令检查防火墙状态:
- sudo systemctl status firewalld —— 若显示 active (running),说明已启用;若为 inactive,则无需额外配置(但生产环境不建议关闭)
放行 HTTP 和 HTTPS 服务
firewalld 提供预定义的服务名(http 和 https),对应标准端口及协议规则,推荐使用服务名而非直接开放端口,更安全且语义清晰:
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload —— 应用变更(注意:不执行此步配置不会生效)
验证是否成功放行
运行以下命令查看当前区域(通常是 public)已启用的服务:
-
firewall-cmd --list-services —— 输出中应包含
http和https - 也可用 firewall-cmd --list-all 查看完整规则列表,确认 services 下有这两项
Ubuntu/Debian 用户注意:用 ufw 替代 firewalld
Ubuntu 默认使用 ufw(Uncomplicated Firewall)。Apache 安装后通常自带配置,可一键放行:
- sudo ufw allow 'Apache Full' —— 同时开放 80 和 443
- 或分步:sudo ufw allow 80/tcp 和 sudo ufw allow 443/tcp
- 最后启用:sudo ufw enable











