上传超时后,wordpress容器的nginx代理转发器失败

时间:2018-04-23 21:56:58

标签: wordpress docker nginx

我有一个在docker中运行的nginx,它充当https代理。我有很多其他服务在其他docker容器中运行,比如gitlab和nginx似乎可以作为Web代理工作。

今天我设置了一个wordpress docker并在nginx中使用了以下配置:

#
# A virtual host using mix of IP-, name-, and port-based configuration
#

server {
    listen       80;
    listen       443 ssl;
    server_name  x.example.com;

    ssl on;
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    if ($scheme = http) {
            return 301 https://$server_name$request_uri;
    }

    location / {
        proxy_pass http://172.19.0.3;
        proxy_set_header Accept-Encoding "";
        proxy_set_header Host $host;
        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;

        # these two lines here
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

wordpress正在主机端口8080和访客端口80上运行。即,我可以使用网址http://x.example.com:8080完美访问该网站。但是当我尝试使用https进行访问时,即https://x.example.com,nginx为我提供了 504网关超时

docker logs -f nginx-proxy

显示以下日志行。

2018/04/23 21:52:21 [error] 28#28: *3202 upstream timed out (110: Connection timed out) while connecting to upstream, client:
37.20.24.26, server: x.example.com, request: "GET / HTTP/1.1", u 0/", host: "x.example.com"
37.201.224.236 - - [23/Apr/2018:21:52:21 +0000] "GET / HTTP/1.1" 504 585 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" "-"

有人可以帮我解决这个问题吗? Wordpress在不同的docker网络下运行,因为容器是使用docker-compose.xml创建的。这是nginx无法代理的原因吗?

2 个答案:

答案 0 :(得分:1)

我在本地上游也有类似的问题。它指向的是localhost,它已解析为ipv4和ipv6,而docker仅在ipv4上进行了绑定。当来自nginx代理的请求使用ipv6时,它超时(根据连接超时,默认为60s),但是重试成功(因为它使用了ipv4)。

答案 1 :(得分:0)

我的nginx容器无法与为wordpress创建的docker网络进行通信。使用

解决了该问题
  

docker network connect

命令。