gpt4 book ai didi

使用 Docker 和 Nginx 时出现 WordPress 站点健康错误

转载 作者:行者123 更新时间:2023-12-04 08:26:39 24 4
gpt4 key购买 nike

我正在尝试使用 Docker、Nginx 反向代理和 Let's Encrypt 为多个 WordPress 站点设置生产环境。

我有 3 个容器用于代理组,使用 jwilder/docker-gen、jwilder/nginx-proxy 和 jrcs/letsencrypt-nginx-proxy-companion 图像。

我还有用于 mysql 和 WordPress 的单独容器。

一切运行正常,网站加载。但是,我在 WordPress 中收到以下站点健康错误:

The REST API request failed due to an error. Error: cURL error 28:Connection timed out after 10000 milliseconds (http_request_failed)

The loopback request to your site failed, this means features relyingon them are not currently working as expected. Error: cURL error 28:Connection timed out after 10001 milliseconds (http_request_failed)

Background updates ensure that WordPress can auto-update if a securityupdate is released for the version you are currently using.

Warning Could not confirm that the wp_version_check() filter isavailable

我已确认 cURL 在 WordPress 容器内工作,并且所有容器都在同一个 docker 网络上。

我试过禁用 WordPress 中的所有插件并使用默认主题 (twentytwenty)。

我能够更新插件和主题。

我不能说有什么特别不工作,但是,我希望所有站点运行状况测试都能通过。该站点在 LAMP 堆栈上运行,并且所有站点运行状况测试均通过。

我要提到的是,该网站在 Docker 容器中运行时响应速度似乎也较慢。

我认为这一定与 Nginx 有关,但我无法弄清楚它可能是什么。任何帮助将不胜感激。

包括我的 docker-compose.yml 配置。

对于 Nginx:


services:
nginx:
image: jwilder/nginx-proxy
container_name: nginx
restart: always
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: 'true'
ports:
- 80:80
- 443:443
# environment:
# - VIRTUAL_PROTO=https
# - VIRTUAL_PORT=443
volumes:
- /srv/nginx/data/conf.d:/etc/nginx/conf.d
- /srv/nginx/data/vhost.d:/etc/nginx/vhost.d
- /srv/nginx/data/html:/usr/share/nginx/html
- /srv/nginx/data/certs:/etc/nginx/certs:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- proxy

dockergen:
image: jwilder/docker-gen
container_name: dockergen
command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
volumes:
- /srv/nginx/data/conf.d:/etc/nginx/conf.d
- /srv/nginx/data/vhost.d:/etc/nginx/vhost.d
- /srv/nginx/data/html:/usr/share/nginx/html
- /srv/nginx/data/certs:/etc/nginx/certs:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro
networks:
- proxy

letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt
depends_on:
- nginx
- dockergen
environment:
NGINX_PROXY_CONTAINER: nginx
NGINX_DOCKER_GEN_CONTAINER: dockergen
volumes:
- /srv/nginx/data/conf.d:/etc/nginx/conf.d
- /srv/nginx/data/vhost.d:/etc/nginx/vhost.d
- /srv/nginx/data/html:/usr/share/nginx/html
- /srv/nginx/data/certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- proxy

networks:
proxy:
driver: bridge

对于 WordPress


services:

db:
container_name: $DB_CONTAINER
image: mysql:5.7
restart: always
volumes:
- ./db_data:/var/lib/mysql
environment:
#MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
MYSQL_DATABASE: $DB_NAME
MYSQL_USER: $DB_USER
MYSQL_PASSWORD: $DB_PASSWORD

wp:
container_name: $WP_CONTAINER
image: wordpress:latest
depends_on:
- db
expose:
- 80
restart: always
extra_hosts:
- "my-domain-name.com:192.168.80.2"
volumes:
#- ./wp-config.php:/var/www/html/wp-config.php:rw
- ./wp-content:/var/www/html/wp-content:rw
environment:
WORDPRESS_DB_HOST: $DB_CONTAINER
WORDPRESS_DB_NAME: $DB_NAME
WORDPRESS_DB_USER: $DB_USER
WORDPRESS_DB_PASSWORD: $DB_PASSWORD
WORDPRESS_TABLE_PREFIX: $WP_TABLE_PREFIX
VIRTUAL_HOST: $VIRTUAL_HOST
VIRTUAL_PORT: $VIRTUAL_PORT
LETSENCRYPT_HOST: $LETSENCRYPT_HOST
LETSENCRYPT_EMAIL: $LETSENCRYPT_EMAIL
WORDPRESS_CONFIG_EXTRA: |
define('ALTERNATE_WP_CRON', true);

networks:
default:
external:
name: nginx_proxy

最佳答案

这太简单了,自从我弄清楚出了什么问题后,我就一直在踢自己。

在 WP 堆栈 docker 撰写文件中,此行是正确的,但缺少“www”。

      - "www.my-domain-name.com:192.168.80.2"

在我的 WordPress 设置中,站点 URL 包含 www.所以我将域名指向 Nginx 容器的 IP 是正确的,但不包括 WP 中指定的完整 URL 导致了问题。

对于在使用 Docker、Nginx 时遇到 WP 站点健康问题的任何人,解决方案是在 wordpress 容器设置中使用“extra_hosts”指令,并将 Nginx 容器的 IP 指向 WordPress 站点 URL。

关于使用 Docker 和 Nginx 时出现 WordPress 站点健康错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65225998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com