在反向代理后面运行的apache2 / php容器不尊重重定向中的转发端口和proto?

时间:2018-07-21 00:10:14

标签: php docker apache2 reverse-proxy traefik

我正在反向代理(traefik)后面使用官方docker库php:7.0.30-apache映像的修改版。
修改包括将apache2默认服务端口80更改为端口1025。(openshift不允许进行根操作,例如在1024以下的docker容器内打开端口)
现在,在容器内使用重定向时,apache2会忽略HTTP_X_FORWARDED_PORT标头,并重定向到添加了端口1025的正确主机名。

示例:
该应用程序公开运行在http://www.app.com(端口80)上,内部运行在http://app.local:1025,执行header("Location: web");时,它重定向到http://www.app.com:1025/web而不是http://www.app.com/web

我还注意到以下行为:
在使用.htaccess文件重定向到https时,浏览器显示"too many redirects error",因为HTTP_X_FORWARDED_PORTHTTP_X_FORWARDED_PROTO都被忽略了。

对于.htaccess和php header("Location: xyz");,我需要做什么,以重定向工作并尊重反向代理后面的转发标头?

我确实知道这是从反向代理发送到apache主机的请求的正确行为,我只需要配置apache2来响应对反向代理发出的请求。

0 个答案:

没有答案