如何解决在Next.js中进行请求时,为什么会有不同的主机头?
我将我的Next.js应用托管在Docker容器内的Elastic Beanstalk中的Amazon Web Services上。我最近通过从Express.js打印req.host
注意到,无论何时将请求发送到/_next*
路由,主机都是myid.elasticebeanstalk.com
。在所有其他请求(例如,对实际页面或对API服务器的请求)中,主机都是example.com
客户端和服务器端(假设我的应用托管在该地址)。
我想知道为什么会这样吗?我如何将主机头甚至设置为/_next*
的{{1}}路由?我怀疑这有时会导致SSL错误,因为主机将不正确。
弹性beantalk配置是单个实例。 DNS记录是在AWS Route 53中配置的。带有example.com
的主机标头仅出现在服务器端请求中。 myid.elasticebeanstalk.com
是CNAME,不是是别名。日志在docker容器内制作。一般来说,我认为SSL证书是由AWS在Cloudfront中提供的。
编辑:看来应该在Elastic Beanstalk的主机操作系统中设置主机名,该操作系统应该是Linux。 AWS doc对此进行了解释。
解决方法
要设置自定义HTTP标头,可以在next.config.js中使用标头键:
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
属性的对象的数组:
source
是传入的请求路径模式。
headers
是具有key
和value
属性的标头对象数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。