OpenLiteSpeed致Next.js请求对象URL错误,Nginx需修复哪个请求头?
问题:OpenLiteSpeed导致Next.js构造NextRequest时触发URL错误
问题场景
使用Next.js的NextRequest处理请求时,代码无法执行到业务逻辑,直接抛出URL无效错误。
代码示例
import { type NextRequest } from 'next/server'; export function GET( request : NextRequest, { params }: { params: { slug: string } } ) { console.log('hola!') // 后续业务逻辑 }
错误信息
⨯ TypeError: Invalid URL at new URL (node:internal/url:775:36) ... code: 'ERR_INVALID_URL', input: '/sitemap/asdasd', base: 'https, https://localhost:3000/sitemap/asdasd'
问题分析
错误显示构造URL时的base参数异常,包含重复的协议前缀(https, https://)。验证后确认,使用该错误base会触发相同报错,正确的base应为https://localhost:3000/sitemap/asdasd。
此问题源于OpenLiteSpeed转发请求时,错误设置了重复的转发请求头,导致Next.js构造NextRequest的URL时解析出错误的base值。
解决方案(通过Nginx修复)
在Nginx的反向代理配置中,覆盖OpenLiteSpeed发送的错误转发头,确保Next.js能获取正确的协议和主机信息:
location / { # 重置转发头,避免OpenLiteSpeed的错误值干扰 proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $remote_addr; # 转发请求到OpenLiteSpeed服务地址 proxy_pass http://your-openlitespeed-address; }
重点修复X-Forwarded-Proto和X-Forwarded-Host这两个请求头——它们是Next.js构造请求URL的核心依赖,重置后即可消除重复前缀的问题。
内容的提问来源于stack exchange,提问作者LLDimup
相关产品推荐
相关产品推荐

