Konfiguracja reverse proxy z Cloudflare i Nginx Proxy / acme-companion
Reverse proxy działa jako pośrednik między klientem a serwerem aplikacyjnym. Dzięki niemu łatwo zarządzisz certyfikatami SSL, skorzystasz z wydajnościowych zalet Cloudflare i zwiększysz bezpieczeństwo aplikacji.
Wprowadzenie
Reverse proxy to serwer, który działa jako pośrednik między klientem a serwerem aplikacyjnym, przekazując żądania HTTP/S do odpowiednich usług. Dzięki temu rozwiązaniu można łatwo zarządzać certyfikatami SSL, korzystać z wydajnościowych zalet Cloudflare, a także zwiększyć bezpieczeństwo aplikacji. W tym przewodniku skonfigurujemy reverse proxy z Cloudflare, Nginx Proxy i acme-companion do automatycznego odnawiania certyfikatów SSL.
Wymagania wstępne
- Konto Cloudflare — skonfiguruj domenę w Cloudflare i ustaw ją na tryb Proxy.
- Serwer z Dockerem i Docker Compose — na potrzeby tego przewodnika skorzystamy z Docker Compose, aby łatwo uruchomić Nginx Proxy oraz acme-companion.
Krok 1: ustawienia DNS w Cloudflare
- Zaloguj się na swoje konto w Cloudflare i przejdź do ustawień swojej domeny.
- W zakładce DNS dodaj rekordy A (lub CNAME) wskazujące na IP Twojego serwera, a następnie ustaw je w trybie Proxy (pomarańczowa chmurka).
- W SSL/TLS wybierz opcję Full (strict) — ta konfiguracja będzie wymagała certyfikatu SSL na serwerze, który będziemy automatycznie odnawiać dzięki acme-companion.
Krok 2: tworzenie pliku .env
Stwórz plik .env w katalogu projektu, aby przechowywać poufne dane — acme-companion użyje ich do automatycznego odnawiania certyfikatów SSL.
NETWORK=proxy-network
DEFAULT_EMAIL=kontakt@twojadomena.pl
PROJECT_DOMAIN=twojadomena.plKrok 3: konfiguracja Docker Compose
Użyjemy Nginx Proxy wraz z acme-companion, aby obsługiwać automatyczne odnawianie certyfikatów SSL i przekierowanie ruchu przez reverse proxy.
Plik docker-compose.yml
services:
nginx-proxy:
image: "nginxproxy/nginx-proxy"
container_name: "reverse-proxy"
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./data/certs:/etc/nginx/certs:ro
- ./data/vhost:/etc/nginx/vhost.d
- ./data/html:/usr/share/nginx/html
environment:
DEFAULT_HOST: your-default-domain.com
networks:
- ${NETWORK}
acme-companion:
image: nginxproxy/acme-companion
container_name: "acme-companion"
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/certs:/etc/nginx/certs:rw
environment:
NGINX_PROXY_CONTAINER: "reverse-proxy"
DEFAULT_EMAIL: ${DEFAULT_EMAIL}
depends_on:
- nginx-proxy
networks:
- ${NETWORK}
networks:
${NETWORK}:
external: trueWyjaśnienie konfiguracji
- nginx-proxy — główny kontener reverse proxy, który nasłuchuje na portach 80 i 443 i przekierowuje ruch do odpowiednich usług na podstawie nazw domen.
- acme-companion — kontener odpowiedzialny za automatyczne odnawianie certyfikatów SSL. Korzysta z danych Cloudflare, aby weryfikować certyfikaty za pomocą DNS-01.
- Volumes — montowane są pliki i katalogi, aby zapewnić prawidłowe działanie Nginx Proxy oraz przechowywać certyfikaty SSL.
Krok 4: tworzenie i uruchamianie sieci Docker
Utwórz zewnętrzną sieć Docker, aby usługi mogły współdzielić sieć:
docker network create proxy-networkKrok 5: uruchomienie kontenerów
docker-compose up -dPo uruchomieniu kontenerów Nginx Proxy powinien automatycznie nasłuchiwać na portach 80 i 443. acme-companion będzie dbał o to, aby certyfikaty SSL były odnawiane automatycznie przez Cloudflare.
Krok 6: dodanie usług do reverse proxy
Aby dodać nową usługę do reverse proxy, użyj poniższej konfiguracji docker-compose.yml dla każdej usługi, którą chcesz przekierować przez Nginx Proxy:
services:
my-service:
image: my-service-image
environment:
VIRTUAL_HOST: ${PROJECT_DOMAIN}
LETSENCRYPT_HOST: ${PROJECT_DOMAIN}
CERT_NAME: ${PROJECT_DOMAIN}
networks:
default:
name: proxy-network
external: truePo dodaniu takiej konfiguracji i uruchomieniu usługi Nginx Proxy automatycznie przekieruje ruch na my-service-domain.com do odpowiedniego kontenera, a acme-companion wygeneruje certyfikat SSL.
Krok 7: testowanie i weryfikacja
- Sprawdź certyfikaty SSL — upewnij się, że certyfikaty zostały poprawnie zainstalowane i są aktywne. Możesz to sprawdzić, wchodząc na swoją domenę w przeglądarce i sprawdzając, czy połączenie jest bezpieczne (ikona kłódki).
- Monitorowanie odnowienia certyfikatów — acme-companion automatycznie odnawia certyfikaty. W logach kontenera możesz śledzić informacje o procesie odnawiania.
Podsumowanie
Dzięki konfiguracji reverse proxy z Cloudflare, Nginx Proxy i acme-companion możemy:
- Zwiększyć bezpieczeństwo — połączenia HTTPS przez Cloudflare oraz automatyczne certyfikaty SSL.
- Uprościć zarządzanie certyfikatami SSL — acme-companion automatycznie odnawia certyfikaty za pomocą DNS-01.
- Zwiększyć wydajność — CDN Cloudflare przyspiesza ładowanie zasobów globalnie, zmniejszając obciążenie serwera.