frankenphp部署需开放80(http)和443(https)端口以支持web访问与let's encrypt证书自动签发,若用frp则还需放行7000等中转端口,ssh等管理端口须限制ip。

FrankenPHP 本身不强制要求特定端口,但实际部署时需根据你使用的运行模式、反向代理方式和对外服务类型来开放对应端口。核心原则是:**只放行真正被外部访问的入口端口,其余一律关闭**。
必须放行的 HTTP/HTTPS 入口端口
如果你用 FrankenPHP 直接监听 Web 请求(如通过 Caddy 或内置服务器暴露服务),需在阿里云安全组中放行:
- 80 端口(TCP):用于普通 HTTP 访问,适合调试或配合自动 HTTPS 重定向
- 443 端口(TCP):用于 HTTPS 流量,生产环境必备;FrankenPHP 常与 Caddy 配合自动申请 Let's Encrypt 证书,必须开放此端口才能完成 ACME 验证和加密通信
若启用 frp 内网穿透或反向代理中转
当 FrankenPHP 运行在内网或容器中,通过 frp 或 Nginx 反代暴露服务时,还需额外放行中转端口:
-
7000 端口(TCP):frp 服务端默认通信端口(
bind_port),客户端靠它连接服务器 - 7500 端口(TCP)(可选):frp dashboard 管理界面端口,仅调试时临时开放,上线后建议关闭或限制 IP
-
自定义 vhost 端口(如 8080、8443):若 frp 配置了
vhost_http_port或vhost_https_port,这些端口也要放行
开发与管理相关端口(按需开放)
这些端口不面向公网用户,仅限运维或本地调试使用,务必限制来源 IP:
- 22 端口(TCP):SSH 登录必需,建议修改为非默认端口并绑定白名单 IP
- 8888 端口(TCP):部分 Docker 容器或 Caddy Admin 插件可能用到,非必需,勿随意开放
- 6379 / 3306 等(TCP):如果 FrankenPHP 应用直连 Redis、MySQL,且数据库未隔离在内网,才需单独放行——但更推荐数据库部署在私有网络,通过内网互通,不暴露到公网
特别注意:Docker 和系统防火墙不能漏
阿里云安全组只是第一道关卡。如果你用 Docker 部署 FrankenPHP:
- Docker 默认会绕过系统 firewalld/iptables 规则,但需确保
docker run或docker-compose.yml中正确声明-p 80:8000类似映射 - 若启用了 firewalld,需额外执行:
firewall-cmd --permanent --add-port=80/tcpfirewall-cmd --permanent --add-port=443/tcpfirewall-cmd --reload
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











