我正在反向代理(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_PORT
和HTTP_X_FORWARDED_PROTO
都被忽略了。
对于.htaccess
和php header("Location: xyz");
,我需要做什么,以重定向工作并尊重反向代理后面的转发标头?
我确实知道这是从反向代理发送到apache主机的请求的正确行为,我只需要配置apache2来响应对反向代理发出的请求。