Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 为什么会有';在Next.js中发出请求时是否有不同的主机头?_Amazon Web Services_Docker_Http Headers_Next.js_Http Host - Fatal编程技术网

Amazon web services 为什么会有';在Next.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

我将Next.js应用程序托管在docker容器中的Elastic Beanstalk中的Amazon Web服务上。我最近从Express.js打印
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后端之间有多少个服务/服务器,以便确定哪个组件正在设置您正在记录的主机头。