Dockerized Wordpress/nginx:连接到上游时连接被拒绝

时间:2021-07-22 07:24:39

标签: php wordpress docker nginx

我在 Docker 上设置使用 nginx 代理的 Wordpress 时遇到了困难。我设法解决了大多数问题,例如重写和数据库导入,但是当访问 WP 管理登录面板时,它工作正常,但是一旦我登录,我得到 502 Bad Gateway,并且 Docker 的 nginx 日志说:

2021/07/20 14:01:25 [error] 24#24: *346 connect() failed (111: Connection refused) while connecting to upstream, client: 10.5.0.130, server: $host, request: "POST /example_com/wp-login.php HTTP/1.1", upstream: "https://172.18.0.4:443/wp-admin/", host: "docker-node-01", referrer: "https://docker-node-01/example_com/wp-login.php"

我的docker-compose.yml

  networks:
    main:
      driver: bridge
 
  services:
    wordpress-nginx:
      image: nginx
      container_name: wordpress-nginx
      hostname: wordpress-nginx
      restart: always
      ports:
        - 80:80
        - 443:443
      networks:
        - main
      extra_hosts:
        - "example.com www.example.com:172.18.0.4"
      volumes:
        - ./data/nginx_conf:/etc/nginx/conf.d
        - ./data/nginx_ssl:/etc/nginx/ssl
 
    wordpress-mysql:
      image: mysql
      container_name: wordpress-mysql
      hostname: wordpress-mysql
      restart: always
      networks:
        - main
      env_file:
        - ./etc/wordpress-mysql.env
      volumes:
        - ./data/dbinit:/docker-entrypoint-initdb.d
        - ./data/dbdata:/var/lib/mysql
 
    example.com:
      image: wordpress
      container_name: example.com
      depends_on:
        - wordpress-mysql
      hostname: example.com
      restart: always
      networks:
        - main
      extra_hosts:
        - "example.com www.example.com:127.0.1.1"
      env_file:
       - ./etc/wordpress-main.env
      volumes:
       - ./data/wp_plugins:/var/www/html/wp-content/plugins
       - ./data/wp_themes:/var/www/html/wp-content/themes
       - ./data/wp_uploads:/var/www/html/wp-content/uploads

我的nginx配置:

server {

listen  443 ssl;
server_name $host;
resolver    127.0.0.11;

ssl_certificate     /etc/nginx/ssl/default.crt;
ssl_certificate_key /etc/nginx/ssl/default.key;

location /example_com/ {

    sub_filter          'www.example.com' '$host/example_com';
    sub_filter          'example.com' '$host/example_com';
    sub_filter_once     off;

    proxy_pass          http://example.com/;
    proxy_redirect      http://example.com/ example_com/;
    proxy_set_header    Host example.com;

    proxy_set_header    Accept-Encoding '';
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto $scheme;

    proxy_cookie_path   / /;
    proxy_intercept_errors on;
    error_page 301 302 307 = @handle_redirects;

    # no cache
    proxy_no_cache 1;
    proxy_cache_bypass 1;

}

location @handle_redirects {
    set $saved_redirect_location '$upstream_http_location';
    proxy_pass $saved_redirect_location;
}

location ~ ^([^.\?]*[^/])$ {
   try_files $uri @addslash;
}

location @addslash {
   return 301 $uri/;
}

location / {
   try_files $uri $uri/ /index.php$is_args$args;
}

}

在类似问题中,我找不到适合我的解决方案。就其价值而言,我认为这是 Wordpress 的 PHP 而非 nginx 配置本身的问题。

0 个答案:

没有答案