域名解析与 HTTPS 配置

更新于 2026年8月21日

适用人群:PHP 应用已部署、要配好域名与全站 HTTPS 的开发者。

核心概念

解析 + 证书

域名 A 记录指向服务器 IP,certbot 为 Nginx 申请证书、配 443 并把 80 跳 443。

让框架知道是 HTTPS

Laravel 等框架生成绝对链接、回调地址时依据请求协议。若前面有代理/负载均衡,需要配置信任代理头(TrustProxies)或在生产强制 HTTPS,避免生成的链接变成 http、出现混合内容。

操作步骤

  1. 步骤 1解析域名

    A 记录指向服务器公网 IP,@ 与 www 各一条。

  2. 步骤 2申请证书

    certbot --nginx 自动为域名申请并配置 Let's Encrypt 证书。

  3. 步骤 3配 HTTPS + 跳转

    443 server 块引用证书,80 端口 301 跳 HTTPS。

  4. 步骤 4框架侧识别 https

    Laravel 配置 TrustProxies 信任代理头,或在生产环境强制 HTTPS,保证生成的链接为 https。

  5. 步骤 5验证续期

    certbot renew --dry-run 验证自动续期。

实际示例

certbot --nginx -d example.com -d www.example.com
certbot renew --dry-run
// Laravel:生产环境强制 https(如 AppServiceProvider boot 中)
if (app()->environment('production')) {
    \URL::forceScheme('https');
}

常见错误

  • ⚠️框架没识别 https,生成的链接、支付回调、静态资源变成 http,出现混合内容
  • ⚠️只配了 443 没做 80→443 跳转
  • ⚠️证书没自动续期,到期全站告警
  • ⚠️把 APP_URL 还写成 http://,导致邮件、队列里的绝对链接错误

对应工具

常见问题

配了 HTTPS 但页面里还有 http 资源?
让框架识别 https(信任代理/强制 scheme),并把 APP_URL/站点地址配置改成 https://,重新生成的链接就是 https。
Laravel 生成的链接总是 http?
多因前置代理未被信任。配置 TrustProxies 中间件信任代理头,或生产环境 forceScheme('https')。

相关教程

相关文章

官方资料来源