You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Next.js部署后Next-Auth的Untrusted Host错误?

解决Next-Auth v5生产环境Untrusted Host错误

针对你在Hostinger VPS上部署Next.js+Next-Auth v5 beta遇到的Untrusted Host问题,结合反向代理场景,以下是针对性的排查和解决步骤:

1. 修正Nginx反向代理配置

Nginx必须正确传递请求的主机头和协议信息,否则Next.js和Next-Auth无法识别真实的访问域名。在你的Nginx站点配置中添加以下proxy_set_header指令:

server {
    # 其他配置...
    location / {
        proxy_pass http://localhost:3000; # 替换为你的Next.js服务端口
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme; # 关键:确保HTTPS请求被正确识别
        proxy_set_header X-Forwarded-Host $host;
    }
}

修改后重启Nginx生效:

sudo systemctl restart nginx

2. 开启Next.js信任代理设置

在next.config.js中添加trustProxy配置,让Next.js信任Nginx传递的代理头信息:

/** @type {import('next').NextConfig} */
const nextConfig = {
  // 其他现有配置...
  trustProxy: true,
}

module.exports = nextConfig

3. 验证NEXTAUTH_URL环境变量

确保NEXTAUTH_URL设置为完整的协议+域名格式(例如https://your-domain.com),且在生产环境中确实生效:

  • 可以在Auth.ts中临时添加日志验证:
    console.log("NEXTAUTH_URL:", process.env.NEXTAUTH_URL);
    
  • 重启PM2服务后查看日志,确认变量值与实际访问域名一致。

4. 重启所有服务

修改配置后,必须重启Next.js服务(PM2)和Nginx,确保所有新配置生效:

pm2 restart your-next-app-name # 替换为你的PM2应用名称
sudo systemctl restart nginx

补充说明

Next-Auth v5的trustHost: true配置需要结合Next.js的trustProxy和正确的代理头传递才能生效——生产环境中反向代理会隐藏真实请求源,只有让Next.js识别到真实的主机信息,Next-Auth才会信任该主机。

内容的提问来源于stack exchange,提问作者kunal srivastava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:16:15