Data publikacji:

29.10.2024

Konfiguracja reverse proxy z cloudflare

Konfiguracja Reverse Proxy z Cloudflare i Nginx Proxy / acme-companion

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 Docker 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
  1. Zaloguj się na swoje konto w Cloudflare i przejdź do ustawień swojej domeny.

  2. 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).

  3. 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 tych danych do automatycznego odnawiania certyfikatów SSL.



Krok 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-comose.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: true
Wyjaśnienie konfiguracji
  • nginx-proxy: To 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-network
Krok 5: Uruchomienie kontenerów
docker-compose up -d

Po 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: true

Po 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
  1. 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).

  2. 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.

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.