Auth.js集成Google登录遇UntrustedHost错误求助(已配SSL及trustHost)
解决Auth.js Google登录的UntrustedHost错误
问题详情
在使用Auth.js实现Google登录时,持续触发以下错误:
[auth][error] UntrustedHost: Host must be trusted. URL was: https://www.dealdhoondo.com/api/auth/signin/google?. Read more at https://errors.authjs.dev#untrustedhost
已尝试的操作:
- 在配置中添加auth_url环境变量
- 设置
trustHost: true - 确认域名拥有有效SSL证书,可通过HTTPS访问
当前配置:
NextAuth代码片段:
export const { handlers, auth, signIn, signOut } = NextAuth({ adapter: PostgresAdapter(pool), providers: [Google], trustHost: true, pages: { signIn: '/auth/login', } })
Docker环境变量设置:
ENV AUTH_URL=https://www.dealdhoondo.com/
也曾尝试:
ENV AUTH_URL=https://www.dealdhoondo.com/api/auth
排查建议与解决方案
1. 修正环境变量名称为NEXTAUTH_URL
Auth.js官方要求使用NEXTAUTH_URL而非AUTH_URL作为环境变量名,这是常见的配置错误。修改Docker环境变量:
ENV NEXTAUTH_URL=https://www.dealdhoondo.com
注意:值末尾不要加斜杠,也不需要包含/api/auth路径,Auth.js会自动拼接。
2. 确保反向代理正确传递Host头
如果服务部署在反向代理(如Nginx、Traefik)之后,需要确保代理正确传递Host请求头,否则Auth.js无法识别真实的外部域名。以Nginx为例,在代理配置中添加:
proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme;
这会让Auth.js获取到正确的外部域名和协议。
3. 验证容器内环境变量是否生效
进入Docker容器,执行以下命令确认NEXTAUTH_URL是否正确加载:
echo $NEXTAUTH_URL
输出应严格等于https://www.dealdhoondo.com,无多余字符或路径。
4. 检查Next.js的basePath配置(若有)
如果你的Next.js项目设置了basePath(如/app),需要将其包含在NEXTAUTH_URL中,例如:
ENV NEXTAUTH_URL=https://www.dealdhoondo.com/app
同时确保NextAuth配置中没有冲突的路径设置。
5. 确认trustHost配置未被覆盖
检查是否在不同环境(开发/生产)的配置文件中存在覆盖trustHost的情况,确保生产环境的NextAuth配置中trustHost: true确实生效。
内容的提问来源于stack exchange,提问作者Raeed Asif
相关产品推荐
相关产品推荐

