LINUX.ORG.RU
ФорумAdmin

vhost reverse-proxy в контейнере отправляет трафик не туда...=(

 , ,


0

1

Сто раз перепроверил и не могу найти ошибку

Есть 3 контейнера.
1 - Только nginx как реверс-прокси
2 - Веб-сервер
3 - Nextcloud

Компос конфиг nginx

services:
  nginx:
    image: nginx:1.27.5-alpine3.21-slim
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./etc/nginx/conf.d:/etc/nginx/conf.d:ro
      - ./etc/nginx/ssl:/etc/nginx/ssl:ro
      - ./etc/nginx/well-known/:/usr/share/nginx/html
    networks:
      proxy:
        ipv4_address: 172.29.3.254
      web:
        ipv4_address: 172.29.3.6
      cloud:
        ipv4_address: 172.29.3.246

networks:
  # Сеть прокси-сервера с одним хостом
  proxy:
    ipam:
      config:
        - subnet: 172.29.3.252/30

  # Сеть веб-сервера
  web:
    ipam:
      config:
        - subnet: 172.29.3.0/29

  # Сеть клауда
  cloud:
    ipam:
      config:
        - subnet: 172.29.3.240/29

Компос конфиг облака

services:
  db:
    image: mariadb:10.6
    ...
    networks:
      proxy_cloud:

  cloud:
    image: nextcloud:29.0.16
    ports:
      - 82:82
    links:
      - db
    depends_on:
      - db
    ...
    networks:
      proxy_cloud:
        ipv4_address: 172.29.3.242

networks:
  proxy_cloud:
    external: true

Конфиг nginx на клауд

server {
	listen 80;
	server_name cloud.exam.ple;

	location ~ /.well-known {
		root /usr/share/nginx/html;
		allow all;
	}

	location / {
		proxy_pass http://172.29.3.242:82;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
	}
}

А ещё есть nginx конфиг на сайт

server {
	listen 80;
	listen 443 ssl;
	server_name exam.ple;

	# === For SSL === #

	location ~ /.well-known {
		root /usr/share/nginx/html;
		allow all;
	}

	if ($scheme = 'http') {
		return 301 https://$host$request_uri;
	}

	ssl_certificate     /etc/nginx/ssl/live/exam.ple/fullchain.pem;
	ssl_certificate_key /etc/nginx/ssl/live/exam.ple/privkey.pem;

	# === END for SSL === #

	location / {
		proxy_pass http://172.29.3.2:81;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
	}
}

Извне сайт по имени exam.ple работает и в логах реверс-прокси видно, как сыплет прокси_пасс на адрес http://172.29.3.2:81
Но вот когда пытаюсь открыть облако cloud.exam.ple, то открывается сайт exam.ple
Останавливаю контейнер с сайтом. Пытаюсь запустить снова клауд нифига! В логах контейнера прокси вижу, как по имени клауда, прокси_пасс пытается замаршрутить трафик на ip сайта.

ЧЯДНТ…?!?


Для того чтобы оставить комментарий войдите или зарегистрируйтесь.