Установлен docker. Фронт слушает nginx-proxy, который проксирует запросы внутрь на nginx.
Данная конструкция установлена на двух машинах, на одной centos7, там все поднялось и работает.
На второй centos8, сайты работают, запросы проксируются, но передается в запросах ip адрес контейнера nginx-proxy.
Все настройки идентичные.
В логах рабочего nginx-proxy (centos7) виден ip адрес клиента
nginx.1 | site.ru 77.88.5.92 - - [29/Mar/2020:14:21:41 +0000] "GET /264.html HTTP/1.1" 200 10759 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +
yandex.com/bots)" D kj В логах nginx-proxy (centos8) идет ip контейнера, половина данных нет
nginx.1 | _ 172.18.0.1 - - [29/Mar/2020:14:03:34 +0000] "GET / HTTP/1.1" 400 157 "-" "-"
Контейнер nginx-proxy собирается в docker-compose.yml version: '3.0'
services:
proxy:
image: jwilder/nginx-proxy
# image: jwilder/nginx-proxy:alpine
restart: always
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /home/adkondrdo8/docker_site/site.ru/docker/nginx/ssl:/etc/nginx/certs
networks:
- proxy
whoami:
image: jwilder/whoami
restart: always
environment:
- VIRTUAL_HOST=whoami.local
networks:
proxy: # driver: bridge
На бекэнде в настойках виртуального хоста в разделе server:
set_real_ip_from 172.18.0.0/24;
set_real_ip_from 172.18.0.1;
set_real_ip_from 172.18.0.2;
real_ip_header X-Real-IP;
В centos8 есть особенность в новой подсистеме брандмауэра - nftables, а Docker поддерживает только iptables, может быть в этом загвоздка, при установке не подымался DNS в контейнерах, было решено добавлением правила маскарада firewall-cmd --zone=public --add-masquerade --permanent