我有以下設(shè)置,我一生都無法弄清楚為什么我無法連接到 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 設(shè)置為在端口 8080 上運行,當(dāng)我進入容器并針對該地址運行 curl 請求時,它可以工作。根據(jù) compose 文件,它應(yīng)該將該地址暴露給由包括 nginx 在內(nèi)的所有服務(wù)共享的本地 compose 網(wǎng)絡(luò)。根據(jù) nginx 配置,它應(yīng)該將每個請求(除了/health檢查,它有效)傳遞給api服務(wù)。相反,返回的是來自 nginx 的 502。我哪里混了?我做錯什么了?
1 回答

米琪卡哇伊
TA貢獻1998條經(jīng)驗 獲得超6個贊
問題實際上出在我的 go 應(yīng)用程序中。使用 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 關(guān)注
- 227 瀏覽
添加回答
舉報
0/150
提交
取消