Skip to content

Nginx Load Balancer with Docker Compose ​

本機快速架一個 Nginx load balancer + 多個 backend,用來測試分流。

lb/nginx.conf
server/Dockerfile
docker-compose.yml

Backend ​

dockerfile
FROM python:3.12
CMD ["python3", "-m", "http.server", "8080"]
EXPOSE 8080

Nginx ​

nginx
events {}

http {
    upstream backend {
        server server1:8080;
        server server2:8080;
        server server3:8080;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend;
        }
    }
}
  • upstream 預設 round-robin;可加 least_conn、ip_hash 或 weight=
  • compose 內用 service 名稱當 hostname

docker-compose.yml ​

yaml
services:
  lb:
    image: nginx
    volumes:
      - ./lb/nginx.conf:/etc/nginx/nginx.conf:ro
    ports:
      - 8080:80
    depends_on: [server1, server2, server3]
  server1:
    build: server/
  server2:
    build: server/
  server3:
    build: server/

測試分流時 client / server 都用 async,並在 backend 記 log 再統計。

參考 ​

頁面歷史

Just observe 👀