간혹 nginx 서버가 잘못된 docker-compose 서비스로 요청을 전달하는 경우가 있습니다.Docker 작성 네트워크가 노드를 혼동했습니다.
나는 고정 표시기-작성 설정
version: "3.0"
services:
proj-reader:
image: repositry:5000/my-company.com/proj-reader
ports:
- "28090:8080"
- "28095:5005"
proj-helpdesk:
image: repository:5000/my-company.com/proj-helpdesk
ports:
- "29080:8080"
- "29085:5005"
proj-frontend:
image: repository:5000/my-company.com/proj-frontend
ports:
- "80:80"
links:
- "proj-helpdesk:backend"
- "proj-reader:reader"
...
프론트 엔드는 NodeJs 응용 프로그램과의 nginx 컨테이너입니다 있습니다. 그리고 우리는 다음의 nginx 구성이 있습니다
upstream backend {
server backend:8080;
keepalive 30;
}
upstream reader {
server reader:8080;
keepalive 30;
}
server {
listen 80;
client_max_body_size 2m;
server_name localhost;
root /usr/share/nginx/html;
location /api/ {
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_pass http://backend;
proxy_read_timeout 600;
}
location /web-callback/ {
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_pass http://reader;
}
}
을 그리고 가끔/웹 콜백에 대한 해당 요청을 볼 수 있습니다/프론트 엔드 서비스에 대한 링크 섹션에서 지적하지 않는 다른 서비스에 받았다된다. 처음에는 리더 서비스를 다시 시작한 후에 발생한 일입니다. 그러나 yerstaday 이런 상황이 반복되고 독자가 다시 시작되지 않았다는 것을 알고 있습니다. 무엇입니까? 미래에이 상황을 어떻게 막을 수 있습니까?
사용 K8S, 그것은 좋습니다. –
링크가 더 이상 사용되지 않는 경우 서비스 이름 -https://github.com/docker/components/issues/2831을 사용하십시오. –
또한 [사용자 정의 네트워크에서 임베디드 DNS 서버] (https://docs.docker.com/engine/userguide/networking/configure-dns/)를 사용하십시오. nginx 설정'resolver 127.0.0.11; ' –