traefik / plugin-rewritebody

Rewrite body is a middleware plugin for Traefik which rewrites the HTTP response body by replacing a search regex by a replacement string
https://plugins.traefik.io/plugins/628c9ec2ffc0cd18356a97a2/log4-shell
Apache License 2.0
56 stars 21 forks source link

Plugin silently fails to apply rewrites for some containers #14

Open IntermittentlyRupert opened 3 years ago

IntermittentlyRupert commented 3 years ago

This may be a duplicate of #13, but I'm not seeing the panic logs described in that issue. As with #13 I'm using CLI static config and Docker tag dynamic config.

Of the containers I've tried, these have rewrites applied correctly:

and these silently fail:

Here's a minimal docker-compose.yaml where portainer will have the theme.park stylesheet injected into responses and sonarr will not:

version: "3"
services:
  traefik:
    image: traefik:2.3.4
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    command:
      - --log.level=DEBUG
      - --accesslog=true
      - --providers.docker=true
      - --pilot.token=${TOKEN}
      - --experimental.plugins.rewrite.modulename=github.com/traefik/plugin-rewritebody
      - --experimental.plugins.rewrite.version=v0.3.1
  portainer:
    image: portainer/portainer
    labels:
      - traefik.http.routers.portainer.rule=Host(`portainer.localhost`)
      - traefik.http.routers.portainer.middlewares=portainer
      - traefik.http.middlewares.portainer.plugin.rewrite.rewrites.regex=</head>
      - traefik.http.middlewares.portainer.plugin.rewrite.rewrites.replacement=<link rel="stylesheet" type="text/css" href="https://gilbn.github.io/theme.park/CSS/themes/portainer/plex.css"></head>
  sonarr:
    image: linuxserver/sonarr
    labels:
      - traefik.http.routers.sonarr.rule=Host(`sonarr.localhost`)
      - traefik.http.routers.sonarr.middlewares=sonarr
      - traefik.http.middlewares.sonarr.plugin.rewrite.rewrites.regex=</head>
      - traefik.http.middlewares.sonarr.plugin.rewrite.rewrites.replacement=<link rel="stylesheet" type="text/css" href="https://gilbn.github.io/theme.park/CSS/themes/sonarr/plex.css"></head>

Here are the associated debug logs from creating the containers then loading the landing page of each service:

mannharleen commented 2 years ago

I am facing a similar issue with a private container. It doesnt panic, just silently doesnt apply the regex replace :(

benjamin-feron commented 1 year ago

The issue can be caused by gzip compression on the backend container.

benjamin-feron commented 1 year ago

This fork supports gzip compression on backends :

https://github.com/packruler/rewrite-body