这实际上是不可能的,但无论如何都要尝试:我想为Apache创建一个容器映像,而不需要作为root运行。因此,我设置了VirtualHost来监听端口8080,而不是任何<1024。在Apache之前有一个代理,它将80端口的流量定向到容器上的8080端口。但是,当我进行Apache重定向时,它总是将端口添加到位置标头。因此,重定向发送返回的是"Location:http://mysite:8080/index",这将失败,因为在端口8080上没有任何监听信息。
有没有办法告诉Apache不要将端口号添加到这些重定向中?我尝试过使用UseCanonicalPhysicalPort,但这似乎没有达到预期的效果。有没有办法阻止它把端口号加到任何东西上?
好的,看起来这种行为是硬编码的,当我查看mod_rewrite的源代码时,我注意到它调用"ap_is_default_port“来确定它是否应该在答案中添加端口。我认为,重写它的唯一方法是在源代码中重写这条线。如果有人知道更好的答案,我会全神贯注的。
发布于 2020-05-25 13:40:32
时间太长,不能发表评论
你在试图解决错误的问题
问题不在于Apache在Location头中包含它正在侦听的端口号(因为就Apache而言,这是正确的行为,它确实在监听端口8080),但问题是您的反向代理对此不正确。
通常,反向代理应该重写位置标头(和其他),并将后端服务器使用的内部URI的任何引用更改为客户端需要用来达到反向代理/负载均衡器的URI。
检查反向代理(treafik)配置,找出为什么不会发生这种情况。
https://serverfault.com/questions/1018604
复制相似问题