Compare commits

...

2 Commits

Author SHA1 Message Date
3fc856c77a README Add souin description 2025-04-18 16:18:32 +08:00
3662ab2605 Add souin http cache middleware 2025-04-18 15:30:53 +08:00
4 changed files with 41 additions and 6 deletions

View File

@ -81,3 +81,13 @@ labels:
I mount the access.log for crowdsec firewall to read. I mount the access.log for crowdsec firewall to read.
PS: Because I access my traefik dashboard through my local network. I commented out the authetication method for dashboard. PS: Because I access my traefik dashboard through my local network. I commented out the authetication method for dashboard.
## Discussion and Changelog
1. Traefik vs Nginx
- Performance: Nginx is still better at high traffic. After all it is written in C. Traefik 3 though claims it has higher 20% performance than before. The latency still showed a little higher than nginx.
- Docker Deployment Ease: Traefik is easier for docker service deployment. In my environment, I can assign each docker stack with labels and then guides the traefik to add Let's encrypt SSL.
2. ChangeLog:
- 2025.4.18 Add Souin HTTP Cache Middleware.

View File

@ -6,7 +6,7 @@ services:
# ports: # ports:
# - 10.0.0.225:80:80 # - 10.0.0.225:80:80
# - 10.0.0.225:443:443 # - 10.0.0.225:443:443
# - 192.168.50.4:8080:8080 # - 192.168.50.4:9090:9090
# - 192.168.50.4:80:80 # - 192.168.50.4:80:80
# - 192.168.50.4:443:443 # Added port mapping for the dashboard # - 192.168.50.4:443:443 # Added port mapping for the dashboard
restart: unless-stopped restart: unless-stopped
@ -33,9 +33,15 @@ services:
- "com.centurylinklabs.watchtower.enable=true" # Added label for Watchtower - "com.centurylinklabs.watchtower.enable=true" # Added label for Watchtower
# "traefik.http.middlewares.auth.basicauth.usersfile=/dashboard_authfile" # "traefik.http.middlewares.auth.basicauth.usersfile=/dashboard_authfile"
- "traefik.http.services.traefik.loadbalancer.server.port=9090" - "traefik.http.services.traefik.loadbalancer.server.port=9090"
redis:
#networks: image: valkey/valkey:latest
container_name: traefik-redis
restart: unless-stopped
networks:
internal_traefik_default:
ipv4_address: 172.20.0.100
networks:
# traefik_default: # traefik_default:
# external: true # external: true
# internal_traefik_default: internal_traefik_default:
# external: true external: true

View File

@ -30,6 +30,22 @@ http:
- application/javascript - application/javascript
- application/json - application/json
- text/plain - text/plain
http-cache:
plugin:
souin:
default_cache:
ttl: 10s
default_cache_control: public, max-age=600
redis:
url: 172.20.0.100://redis:6379
allowed_http_verbs:
- GET
- HEAD
- POST
log_level: debug
api:
souin: {}
prometheus: {}
routers: routers:
block-direct-access: block-direct-access:
rule: "HostRegexp(`{host:.+}`)" # Matches any host rule: "HostRegexp(`{host:.+}`)" # Matches any host

View File

@ -103,3 +103,6 @@ experimental:
bouncer: bouncer:
moduleName: github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin moduleName: github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin
version: v1.4.2 version: v1.4.2
souin:
moduleName: github.com/darkweak/souin
version: v1.7.6