首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Docker和Nginx时WordPress站点健康错误

问使用Docker和Nginx时WordPress站点健康错误
EN

Stack Overflow用户
提问于 2020-12-09 22:41:38
回答 1查看 1K关注 0票数 3

我正在尝试使用Docker、Nginx反向代理为多个WordPress站点设置一个生产环境,让我们来加密。

我使用jwilder/docker-gen、jwilder/nginx-代理和jrcs/letsencrypt代理伴生映像为代理组提供了3个容器。

我还为mysql和WordPress提供了单独的容器。

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

REST请求由于错误而失败。错误: cURL错误28: 10000毫秒(http_request_failed)后连接超时--对站点的回送请求失败,这意味着依赖它们的特性目前无法正常工作。错误: cURL错误28:在10001毫秒(http_request_failed)后台更新后连接超时,确保WordPress可以自动更新,如果您正在使用的版本发布了安全更新。

警告无法确认wp_version_check()筛选器是否可用

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

我尝试过禁用WordPress中的所有插件,并使用默认主题(二十个)。

我能够更新插件和主题。

我不能说有什么东西特别不起作用,但是,我希望所有的网站健康测试都能通过。这个站点运行在一个灯堆栈上,并且所有的站点健康测试都通过了。

我要提到的是,在码头集装箱中运行时,该站点的响应速度似乎也较慢。

我认为这肯定与Nginx有关,但我不知道它会是什么。任何帮助都将不胜感激。

包括我的坞-复合. are配置。

对于Nginx:

代码语言:javascript
复制
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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-12-10 20:47:30

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

在WP堆栈坞文件中,这一行是正确的,但遗漏了'www‘。

代码语言:javascript
复制
      - "www.my-domain-name.com:192.168.80.2"

在我的WordPress设置中,网站网址包括www。因此,我将域名指向Nginx容器的IP是正确的,但不包括WP中指定的完整URL是造成问题的原因。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65225998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档