我有以下设置,我一生都无法弄清楚为什么我无法连接到 api。nginx.confworker_processes auto;worker_rlimit_nofile 200000;events { use epoll; accept_mutex on; multi_accept on; worker_connections 1024;}http { error_log /etc/nginx/error_log.log warn; client_max_body_size 20m; server { listen 80; listen [::]:80; location / { proxy_pass http://api:8080/; } location /health { return 200; access_log off; } }}码头工人-compose.ymlversion: "3.7"services: nginx: container_name: nginx image: "nginx:latest" ports: - "8000:80" networks: - internal_net volumes: - ./container/nginx.conf:/etc/nginx/nginx.conf api: container_name: api build: context: . dockerfile: container/Dockerfile expose: - "8080" networks: - internal_net depends_on: - postgres command: ["./wait-for-it.sh", "postgres:5432", "--timeout=60", "--", "./52-server-go"] postgres: container_name: postgres image: "postgres:9.5-alpine" expose: - "5432" networks: - internal_netnetworks: internal_net: driver: bridgevolumes: container:我的 api 设置为在端口 8080 上运行,当我进入容器并针对该地址运行 curl 请求时,它可以工作。根据 compose 文件,它应该将该地址暴露给由包括 nginx 在内的所有服务共享的本地 compose 网络。根据 nginx 配置,它应该将每个请求(除了/health检查,它有效)传递给api服务。相反,返回的是来自 nginx 的 502。我哪里混了?我做错什么了?
1 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
问题实际上出在我的 go 应用程序中。使用 golang gorilla/mux,必须更改地址:
原件(破损)
// Start server
address := "127.0.0.1:8080"
srv := &http.Server{
Handler: r,
Addr: address,
WriteTimeout: 15 * time.Second,
ReadTimeout: 15 * time.Second,
}
使固定
// Start server
address := "0.0.0.0:8080"
srv := &http.Server{
Handler: r,
Addr: address,
WriteTimeout: 15 * time.Second,
ReadTimeout: 15 * time.Second,
}
我不知道为什么,但这解决了它。
- 1 回答
- 0 关注
- 198 浏览
添加回答
举报
0/150
提交
取消