我正在设置一个docker-compose环境,使用Traefik (v1.7.16)作为反向代理,并希望包含Matomo。我对Matomo和备份数据库(MariaDB)使用Bitnami映像;两者都是latest
。其设置类似于Bitnami's example compose file。
我按照提供的说明进行了操作,除了使用Traefik进行路由之外,一切都很正常。例如,我可以在localhost:<exposedPort>
上运行Matomo,但不能在localhost/matomo
上运行,所以子路径不起作用。
到目前为止我所做的:正如在Matomo FAQ中所解释的,我设置了环境变量MATOMO_ENABLE_PROXY_URI_HEADER=yes
来在config.ini.php
中设置proxy_uri_header = 1
(这是可行的)。然后我为Matomo服务设置traefik标签:
labels:
- 'traefik.backend=matomo'
- 'traefik.docker.network=proxy_traefik'
- 'traefik.enable=true'
- 'traefik.frontend.headers.STSPreload=true'
- 'traefik.frontend.headers.STSSeconds=31536000'
- 'traefik.frontend.rule=Host:localhost; PathPrefixStrip:/matomo;'
- 'traefik.frontend.headers.customRequestHeaders=X-Forwarded-Uri:localhost/matomo'
- 'traefik.frontend.headers.hostsProxyHeaders=X-Forwarded-Uri'
- 'traefik.port=80'
因此,我可以加载页面localhost/matomo
,但所有内部URL(如图像和脚本URL)只引用localhost
,不包括路径/matomo
。
是不是我错过了设置Traefik和Matomo的地方?
发布于 2019-11-29 00:48:02
在过去的一周左右,我自己一直在努力解决这个问题,并最终解决了这个问题。
与OP一样,我仍然在使用traefik v1.7,并且刚刚发现了Matomo,并希望将其连接到我为自己设置的gitea容器上。
我的traefik前端规则标签如下所示:
labels:
traefik.frontend.rule: 'HostRegexp: ${DOMAIN_NAME}, {subdomain:[a-z]+}${DOMAIN_NAME}; PathPrefixStrip:/matomo/'
这是一个特例,因为我希望matomo始终位于我使用的任何主机名上,只要我在URL中添加/matomo/即可。
一个更简单的版本是:
labels:
traefik.frontend.rule: 'Host: ${DOMAIN_NAME}; PathPrefixStrip:/matomo/'
您可以在.env文件中定义DOMAIN_NAME,或者将其替换为与您的示例匹配的localhost
。
让我改变的是最后一个斜杠,如果没有它,访问matomo就会失败。
发布于 2019-09-26 04:08:11
从您的描述和这里的配置片段可以看出,您在这里需要的是PathPrefix-Rule而不是PathPrefixStrip-Rule.这样,内部URL应该添加在本地主机/ matomo之后,因为matomo(您的前缀)在被反向代理到后端之前不会获得剥离的。
https://stackoverflow.com/questions/58064902
复制相似问题