Amazon web services 为什么会有';在Next.js中发出请求时是否有不同的主机头?
我将Next.js应用程序托管在docker容器中的Elastic Beanstalk中的Amazon Web服务上。我最近从Express.js打印Amazon web services 为什么会有';在Next.js中发出请求时是否有不同的主机头?,amazon-web-services,docker,http-headers,next.js,http-host,Amazon Web Services,Docker,Http Headers,Next.js,Http Host,我将Next.js应用程序托管在docker容器中的Elastic Beanstalk中的Amazon Web服务上。我最近从Express.js打印req.host时注意到,每当请求发送到/\u next*路由时,主机就是myid.elasticebeanstalk.com。在所有其他请求中(例如,对于实际页面或对API服务器的请求),主机是example.com客户端和服务器端(假设我的应用程序位于该地址) 我想知道为什么会这样?如何将主机头设置为/\u next*路由为example.co
req.host
时注意到,每当请求发送到/\u next*
路由时,主机就是myid.elasticebeanstalk.com
。在所有其他请求中(例如,对于实际页面或对API服务器的请求),主机是example.com
客户端和服务器端(假设我的应用程序位于该地址)
我想知道为什么会这样?如何将主机头设置为/\u next*
路由为example.com
?我怀疑这可能会导致SSL错误,因为主机将不正确
弹性beanstalk配置是单个实例。DNS记录在AWS路由53中配置。带有myid.elasticebeanstalk.com
的主机头仅出现在服务器端请求中example.com
是一个CNAME,不是一个别名。日志在docker容器中生成。一般来说,SSL证书是由AWS在Cloudfront中提供的
编辑:看起来应该在主机操作系统中设置主机名,弹性Beanstalk应该是Linux。这就是原因。要设置自定义HTTP头,可以使用next.config.js中的headers键:
module.exports = {
async headers() {
return [
{
source: '/about',
headers: [
{
key: 'x-custom-header',
value: 'my custom header value',
},
{
key: 'x-another-custom-header',
value: 'my other custom header value',
},
],
},
]
},
}
headers
是一个异步函数,它期望返回一个数组,其中包含具有源
和头
属性的对象:
source
是传入请求路径模式
headers
是一个标题对象数组,具有键
和值
属性。能否提供有关弹性豆茎配置的更多信息?这是一个单实例环境还是负载平衡环境?您在哪里为example.com配置了指向myid.elasticbeanstalk.com的DNS记录?你能提供一些更一般的信息来更好地概述你的场景吗?我在OP.example.com中添加了你问题的答案,是指向myid.elasticbeanstalk.com的CNAME记录还是别名记录?“仅出现在服务器端请求中”表示您正在docker容器中记录主机头?当您在写关于SSL的文章时。。。在哪里终止SSL连接?您当前使用SSL还是计划使用SSL,并且担心记录错误的主机头?我在OP中为您的问题添加了答案。关于SSL,目前没有问题,但我只想了解为什么某些请求具有不同的主机。谢谢!我在这里主要想了解的是在客户端和nextjs后端之间有多少个服务/服务器,以便确定哪个组件正在设置您正在记录的主机头。