1 min read

How to Set Up Laravel in a Subfolder Using Traefik

Here’s how you can run Laravel in a subfolder with Traefik. Let’s consider this scenario:

  • Traefik is already installed with entry points http and https.
  • Laravel will be installed in the /app subfolder.
  • Traefik and Laravel will use an external network called traefik.
docker-compose.yml
services:
  app:
    image: your-app-image
 
    # ...the rest of the configuration
 
    networks:
      - traefik
    labels:
      - traefik.enable=true
      - traefik.docker.network=traefik
      - traefik.constraint-label=traefik
 
      - traefik.http.middlewares.app-strip.stripprefix.prefixes=/app
 
      # HTTP entrypoint
      - traefik.http.routers.app-http.entrypoints=http
      - traefik.http.routers.app-http.rule=Host(`your-app-domain.com`) && PathPrefix(`/app`)
      - traefik.http.routers.app-http.middlewares=https-redirect,app-strip
 
      # HTTPS  entrypoint
      - traefik.http.routers.app-https.entrypoints=https
      - traefik.http.routers.app-https.rule=Host(`your-app-domain.com`) && PathPrefix(`/app`)
      - traefik.http.routers.app-https.tls=true
      - traefik.http.routers.app-https.middlewares=app-strip
 
networks:
  traefik:
    external: true

Set the subfolder in APP_URL.

.env
APP_URL=https://your-app-domain.com/app

# ...the rest of the configuration

Ensure that all proxies are allowed to let Laravel generate HTTPS URLs.

app/Http/Middleware/TrustProxies.php
- protected $proxies;
 
+ protected $proxies = "*";

Always use URL helpers like url(), route(), etc., to generate full URLs, including the subfolder path.

That’s it! Now you can run your compose file with docker compose up -d and access your Laravel application via the subfolder.