【已解决】nginx反向代理webman报错

稚出

问题描述

nginx配置反向代理,使用的docker,用的文档的配置,第一个项目可以正常,第二个项目就访问504,但是域名+端口号访问就可以成功,下面是nginx报错日志

2022/10/19 10:40:04 [error] 417#417: *244987 upstream timed out (110: Operation timed out) while connecting to upstream

这里是nginx配置

upstream mqtt {
    server 172.17.0.2:8585;
    keepalive 10240;
}

server {
  server_name mqtt.xxxxxxx.com;
  listen 80;
  access_log off;

  location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename){
          proxy_pass http://mqtt;
      }
  }
}

第一个项目nginx配置

upstream webman {
    server 172.18.0.7:6737;
    keepalive 10240;
}

server {
  server_name webman.xxxx.com;
  listen 80;
  access_log off;

  location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename){
          proxy_pass http://webman;
      }
  }
}

做过的尝试

在论坛里搜索相关问题,使用别人的配置也没有成功,百度也没找到解决方案。

已解决

原因是对docker一知半解的。nginx容器和之前的webman项目容器是用docker-compose创建的,所以在同一个网络,而新创建的webman容器是用dockerfile创建的,两个容器不同网络没法通信,用docker network connect连接到nginx所在的network里面就可以了

330 1 0
1个回答

xiuwang

看日志是nginx 连接 172.17.0.2:8585 超时

  • 稚出 2022-10-19

    解决了,原来是nginx和php两个容器网络不互通,docker network connect连到nginx的网络就可以

🔝