我有一个 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/