docker - 如何在具有自定义路径的 AWS ALB 后面使用 Traefik v2.3 为 Wordpress 提供服务?

标签 docker traefik

我有一个 Wordpress 博客,我想将其托管在 mydomain.com/blog。我在 Docker 中使用 Traefik v2.3,图像为 wordpress:latest。

我有一个 AWS ALB 负载均衡器,它终止 https:443 上的证书并将流量发送到 http:80。我不想终止 Traefik 中的 tls 证书。即使我从配置中注释掉 tls=true 和解析器标签,我的 traefik 日志中仍然会出现错误。

level=error msg="Unable to obtain ACME certificate for domains "www.mydomain.com": unable to generate a certificate for the domains [www.mydomain.com]: error: one or more domains had a problem:\n[www.mydomain.com] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: Cannot negotiate ALPN protocol "acme-tls/1" for tls-alpn-01 challenge, url: \n" providerName=letsencryptresolver.acme routerName=rxblog-secure@docker rule="Host(www.mydomain.com) && PathPrefix(/blog)"

在浏览器中我得到“页面没有正确重定向”。

这是我的 wordpress 配置:

version: '3.8'

networks:
  traefik:
    external: true

volumes:
  data:

services:

  blog:
    image: wordpress:latest
    container_name: blog
    restart: always
    networks:
      - traefik
    environment:
      - WORDPRESS_DB_HOST=us-east-1.rds.amazonaws.com
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=
      - WORDPRESS_DB_NAME=wordpress
    volumes:
      - type: volume
        source: data
        target: /var/www/html
      - type: bind
        source: ./uploads.ini
        target: /usr/local/etc/php/conf.d/uploads.ini
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.blog.entrypoints=web"
      - "traefik.http.routers.blog.rule=Host(`www.mydomain.com`) && PathPrefix(`/blog`)"
      - "traefik.http.routers.blog.middlewares=redirect-to-https@docker"
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
      - "traefik.http.routers.blog-secure.entrypoints=websecure"
      - "traefik.http.routers.blog-secure.rule=Host(`www.mydomain.com`) && PathPrefix(`/blog`)"
      - "traefik.http.services.blog-secure.loadbalancer.server.port=80"
      - "traefik.http.routers.blog-secure.tls=true"
      - "traefik.http.routers.blog-secure.tls.certresolver=letsencryptresolver"
      - "traefik.http.middlewares.blog-secure.stripprefix.prefixes=/blog"
      - "traefik.http.middlewares.blog-secure.stripprefix.forceslash=false"

我按如下方式编辑了我的标签:

- "traefik.enable=true"
- "traefik.http.routers.rxblog.entrypoints=web"
- "traefik.http.routers.wordpress.rule=Host(`www.mydomain.com`) && PathPrefix(`/`)"
- "traefik.http.services.rxblog.loadbalancer.server.port=80"
- "traefik.http.middlewares.rxblog.stripprefix.prefixes=/blogtest"
- "traefik.http.middlewares.rxblog.stripprefix.forceslash=false"

然后我添加了一个 .htaccess 文件,如下所示:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

我无法使上述任何组合起作用。我刚收到/blog/的 404

最佳答案

删除路由器上的 tls 设置。

- "traefik.http.routers.blog-secure.tls=true"
- "traefik.http.routers.blog-secure.tls.certresolver=letsencryptresolver"

关于docker - 如何在具有自定义路径的 AWS ALB 后面使用 Traefik v2.3 为 Wordpress 提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63743171/

相关文章:

docker - 下面两个 docker 命令有什么区别?

docker - 如何从 Windows 的 Docker 桌面公开 2375

python - 如何在 ReactJS Docker 中热重载

amazon-web-services - 带有 pod 安全组的 EKS 上的 Traefik

docker - Traefik的原木在哪里?

ssl - 带有 Google Kubernetes Engine 的 Traefik 2.0 重定向中间件

ruby-on-rails - 在heroku上运行时的ssh-agent问题

docker - Ansible docker_container 模块 env 文件

postgresql - 如何在启用 TLS 配置的情况下连接到 Traefik TCP 服务?

docker - 在 Docker Swarm 副本上使用 Traefik 进行 session 持久化