如何解决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
相关产品推荐
相关产品推荐

