Nginx反向代理到Golang服务器的Docker问题

我有nginx反向代理到golang服务器,每个代理都在其自己的docker容器中并正常运行。 尝试连接到Go容器时,在我的本地Mac计算机和生产服务器Linux Debian上,我都一直在Nginx中收到此错误。 一周前,它在我的本地Mac机器上运行,突然间不再可用</ p>

  nginx_1 |  2017/09/28 01:29:54 [错误] 5#5:* 12上游连接时上游超时(110:连接超时),客户端:172.23.0.1,服务器:,请求:“ GET / api / 关于HTTP / 1.1”,上游:“ http://67.199.248.12:8080/api/about”,主机:“ localhost” 
</ code> </ pre>

有人可以解释一下 继续在这里? 什么是67.199.248.12,为什么Nginx无法ping /连接到Go容器?</ p>

这是Go容器中/ etc / hosts内的内容</ p>

  127.0.0.1 localhost 
:: 1 localhost ip6-localhost ip6-loopback
fe00 :: 0 ip6-localnet
ff00 :: 0 ip6-mcastprefix
ff02 :: 1 ip6-allnodes
ff02 :: 2 ip6-allrouters
172.23.0.5 31f4103f002c
</ code> </ pre>

这是我的nginx.conf </ p>

 上游gogo {

服务器运行:8080权重= 10 max_fails = 3 fail_timeout = 30s;
}

服务器{
监听80;

位置/ api / {
解析器127.0.0.1有效= 30s;
proxy_pass http:// gogo;
proxy_redirect关闭;
proxy_set_header主机$ 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-Host $ server_name;
}
}
</ code> </ pre>

我正在使用docker-compose v3来运行nginx和docker </ p>

 < 代码> nginx:
重新启动:始终
图片:nginx \ n卷:
-./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
端口:
-“ 80:80”
命令:/ bin / bash -c“ nginx -g'daemon off;'“

转到:
构建:
上下文:./api
暴露:
-” 8080“
depends_on:
-nginx
</ code> < / pre>

执行代码:</ p>

  func main(){
路由器:= mux.NewRouter()。StrictSlash(true)
路由器 .HandleFunc(“ / api / about”,About).Methods(“ GET”)
log.Fatal(http.ListenAndServe(“:8080”,路由器))
}
</ code> </ pre>

</ div>

展开原文

原文

I have nginx reverse proxying to a golang server, each in its own docker container and running normally. I keep getting this error in nginx when trying to connect to Go container, BOTH on my local Mac machine and on the production server Linux Debian. It was working on my local Mac machine a week ago and all of a sudden it doesn't anymore

nginx_1  | 2017/09/28 01:29:54 [error] 5#5: *12 upstream timed out (110: Connection timed out) while connecting to upstream, client: 172.23.0.1, server: , request: "GET /api/about HTTP/1.1", upstream: "http://67.199.248.12:8080/api/about", host: "localhost"

can someone explain what's going on here? What is 67.199.248.12 and why isn't Nginx able to ping/connect to the Go container?

here's what's inside /etc/hosts in Go container

127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.23.0.5  31f4103f002c

here's my nginx.conf

upstream gogo {
  server go:8080 weight=10 max_fails=3 fail_timeout=30s;
}

server {
  listen 80;

  location /api/ {
    resolver            127.0.0.1 valid=30s;
    proxy_pass          http://gogo;
    proxy_redirect      off;
    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-Host $server_name;
  }
}

I'm using docker-compose v3 to run nginx and docker

  nginx:
    restart: always
    image: nginx
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
    ports:
      - "80:80"
    command: /bin/bash -c "nginx -g 'daemon off;'"

  go:
    build:
      context: ./api
    expose:
      - "8080"
    depends_on:
      - nginx

go code:

func main() {
    router := mux.NewRouter().StrictSlash(true)
    router.HandleFunc("/api/about", About).Methods("GET")
    log.Fatal(http.ListenAndServe(":8080", router))
}

doudao9915
doudao9915 我想这可能是nginx缓存问题?但我不确定
接近 3 年之前 回复
dream_life5200
dream_life5200 使用docker-compose
接近 3 年之前 回复
donglin8467
donglin8467 似乎Nginx容器无法解析go容器的地址。您如何管理网络(群,组合,服务发现,环境变量...)?
接近 3 年之前 回复
duanlan2003
duanlan2003 您如何运行每个容器?
接近 3 年之前 回复

1个回答



似乎容器无法互相ping通?</ p>

我看到两个 可能性:</ strong> </ p>

第一个</ strong>:确保每个容器都在同一网络上</ p>

  docker run  --network = host ... 
</ code> </ pre>

或创建网络</ p>

  docker网络创建nginx_go 
docker run --network = nginx_go ...
</ code> </ pre>

第二</ strong>:使用docker-compose </ p>

 < 代码>版本:“ 3.3” 

服务:
nginx:
图像:nginx
#其他详细信息,例如卷...
服务器:
图像:go
</ code> </ pre>

</ div>

展开原文

原文

It seems like containers can't ping each other ?

I see two possibilities :

First : Ensure each container are on the same network

docker run --network=host ...

or create a network

docker network create nginx_go
docker run --network=nginx_go ...

Second : Use docker-compose

version: '3.3'

services:
    nginx:
      image: nginx
      # others details like volumes...
    server:
        image: go

doutanggun9816
doutanggun9816 其他时间而不是IP地址则显示此...上游:“ gogo / api / about”,主机:“ localhost”
接近 3 年之前 回复
dpdhnd3577
dpdhnd3577 在30秒内
接近 3 年之前 回复
dongyishe6689
dongyishe6689 30秒后还是立即出现错误?
接近 3 年之前 回复
douxunwei8259
douxunwei8259 不,一点也不,我从上次工作起就没有做任何改变,它突然开始出现502个错误
接近 3 年之前 回复
doushou5761
doushou5761 您是否编辑了主机文件或它是默认文件?
接近 3 年之前 回复
dongliushui2001
dongliushui2001 任何想法,那个随机IP地址67.199.248.12来自哪里?
接近 3 年之前 回复
douhai5835
douhai5835 添加了执行代码
接近 3 年之前 回复
douliao8318
douliao8318 您可以向我们展示您的执行代码吗(服务器初始化的一部分)
接近 3 年之前 回复
dpnfxk251524
dpnfxk251524 忘了提及我正在使用docker-compose版本3
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐