GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat a používat Nginx Proxy Manager s Dockerem

Reverzní proxy je webový server, který může sedět před jiným webovým serverem nebo webovou službou. Dokáže šifrovat odchozí provoz, fungovat jako vyvažovač zatížení, přesměrovat provoz a nabízet ochranu. Webový server Nginx lze použít jako proxy server před tradičními servery, ale někdy může být jeho nastavení zdlouhavé a způsobit problémy, pokud není provedeno správně.

Nginx Proxy Manager je aplikace, která usnadňuje nastavení Nginx jako proxy serveru tím, že poskytuje grafické uživatelské rozhraní (GUI) s funkcemi, jako je vestavěná podpora SSL pomocí Let's Encrypt, podpora více hostitelů, ověřování HTTP, přístupové seznamy a uživatelé. management.

Tento tutoriál vás naučí, jak nainstalovat správce proxy Nginx na server Linux pomocí Docker. Všechny populární linuxové distribuce probereme v jediném tutoriálu.

Předpoklady

  • Linuxový server se systémem Ubuntu/Debian/CentOS/Alma Linux/Rocky Linux s minimálně 1 GB RAM.
  • Uživatel bez oprávnění root s právy sudo.
  • Plně kvalifikovaný název domény (FQDN) jako npm.example.com ukazující na server.

Krok 1 – Konfigurace brány firewall

Cent OS/Rocky Linux/Alma Linux

Měli byste mít nainstalovanou bránu firewall Firewall. Zkontrolujte stav brány firewall.

$ sudo firewall-cmd --state
running

Otevřete porty 80, 81 a 443.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-port=81/tcp

Chcete-li změny povolit, znovu načtěte bránu firewall.

$ sudo firewall-cmd --reload

Ubuntu/Debian

Systémy Ubuntu a Debian standardně používají ufw (Uncomplicated Firewall).

Zkontrolujte, zda je spuštěna brána firewall.

$ sudo ufw status

Pokud běží, otevřete porty 80, 81 a 443.

$ sudo ufw allow 80
$ sudo ufw allow 81
$ sudo ufw allow 443

Pokud firewall neběží, otevřete port SSH.

$ sudo ufw allow "OpenSSH"

Povolte bránu firewall, pokud není spuštěna.

$ sudo ufw enable

Pokud běží, znovu jej načtěte, aby se změny projevily.

$ sudo ufw reload

Krok 2 – Instalace Docker

Cent OS/Rocky Linux/Alma Linux

Spusťte následující příkaz a nainstalujte Docker.

$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io

Ubuntu

$ sudo apt install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io

Debian

$ sudo apt install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io

Povolte a spusťte službu Docker.

$ sudo systemctl start docker --now

Přidejte své uživatelské jméno do skupiny Docker.

$ sudo usermod -aG docker $USER

Odhlaste se ze systému a znovu se přihlaste, abyste použili změnu.

Krok 3 – Instalace Docker Compose

Stáhněte a nainstalujte binární soubor Docker compose.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Použijte oprávnění ke spustitelnému souboru na binární soubor.

$ sudo chmod +x /usr/local/bin/docker-compose

Krok 4 – Vytvoření souboru Docker Compose

Vytvořte adresář pro správce proxy Nginx.

$ mkdir ~/nginx-proxy

Přepněte do adresáře.

$ cd ~/nginx-proxy

Vytvořte adresáře pro uživatelská data a certifikáty SSL.

$ mkdir {data,letsencrypt}

Vytvořte a otevřete soubor docker-compose.yml soubor pro úpravy.

$ nano docker-compose.yml

Vložte do něj následující kód.

version: "3"
services:
  npm-app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: npm-app
    restart: unless-stopped
    ports:
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "npm-db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment the line below if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - npm-db
    networks:
      - npm-nw
      - npm-internal

  npm-db:
    image: 'mariadb:latest'
    container_name: npm-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql
    networks:
      - npm-internal

networks:
  npm-internal:
  npm-nw:
    external: true

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Pojďme si soubor projít. V první části souboru importujeme obrázek proxy manažera Nginx a nastavíme některé proměnné prostředí ve formě přihlašovacích údajů k databázi. Porty 80, 81 a 443 také vystavujeme serveru pro přístup. Pro přístup FTP můžete vystavit více portů, například 21. Podporu IPV6 můžete zakázat zrušením komentáře na řádku DISABLE_IPV6: 'true' . Mapovali jsme několik adresářů z našeho hostitele na Docker pro ukládání dat a SQL.

Používáme zde dvě sítě. Jedním z nich je interní síť npm-internal pro připojení správce proxy a databáze. Tento je volitelný, protože se vytváří automaticky. Ale tady to děláme ručně tím, že tomu dáváme název podle našeho výběru.

Do kontejneru správce proxy s názvem npm-nw jsme přidali externí síť . Tato síť je nezbytná, protože ji můžete použít k připojení správce proxy k jakémukoli jinému kontejneru dockeru, který nainstalujete. Použití sítě vám umožní připojit jakýkoli kontejner přímo, aniž byste museli vystavovat jeho porty serveru.

Krok 5 – Spusťte Nginx Proxy Manager

Před spuštěním kontejneru Docker musíme vytvořit externí síť npm-nw . Automaticky se vytvoří vnitřní sítě. Spusťte následující příkaz k vytvoření externí sítě.

$ docker network create npm-nw

Spusťte Docker Container pomocí následujícího příkazu.

$ docker-compose up -d

Zkontrolujte stav kontejnerů.

$ docker ps
CONTAINER ID   IMAGE                             COMMAND                  CREATED              STATUS              PORTS                                                                                  NAMES
c91ca0ddca97   jc21/nginx-proxy-manager:latest   "/init"                  About a minute ago   Up About a minute   0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   npm-app
1738d71b95da   mariadb:latest                    "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp                                                                               npm-db

Krok 6 – Přístup k Nginx Proxy Manager

Nyní můžete přistupovat ke správci proxy serveru Nginx prostřednictvím adresy URL http://yourserverIP:81 . Měla by se zobrazit následující přihlašovací obrazovka.

Pro přihlášení zadejte následující výchozí přihlašovací údaje.

E-mailová adresa: [email protected] Heslo: changeme

Dále budete okamžitě požádáni o nastavení jména a e-mailové adresy.

Klikněte na tlačítko Uložit a budete požádáni o nastavení nového hesla.

Klikněte na tlačítko Uložit znovu a můžete začít používat aplikaci.

Pokud otevřete adresu URL http://yourserverIP ve vašem prohlížeči budete přesměrováni na výchozí stránku, kterou nastavil správce proxy.

Krok 7 – Nastavení názvu domény a SSL pro Nginx Proxy Manager

Pojďme nastavit název domény pro přístup k Nginx Proxy Manager. Tento krok je volitelný, ale je užitečný, pokud chcete aplikaci umístit za SSL.

Klikněte na Hostitelé>> Proxy hostitelé z nabídky řídicího panelu a otevřete stránku Hostitelé proxy. Odtud klikněte na Přidat hostitele proxy pokračujte.

Přidejte název FQDN (npm.example.com ) a klikněte na něj. Zadejte IP adresu vašeho serveru a 81 jako Forward Port .

Přepněte na kartu SSL.

Vyberte možnost Požádat o nový certifikát SSL z rozbalovací nabídky. Vyberte možnosti Vynutit SSL a podpora HTTP/2 . Pokud chcete povolit HSTS, můžete to také povolit. Pokud máte doménu nakonfigurovanou přes Cloudflare, nepovolujte možnost Vynutit SSL jinak uvíznete ve smyčce přesměrování.

Zadejte svou e-mailovou adresu, odsouhlaste podmínky služby Let's Encrypt (TOS) a klikněte na tlačítko Uložit dokončete.

Vaše doména by měla být aktivní a funkční. Zkuste otevřít https://npm.example.com ve vašem prohlížeči a měli byste získat přihlašovací obrazovku Nginx Proxy Manager.

Podobně to můžete udělat pro výchozí vstupní stránku a přiřadit ji k názvu domény jako https://example.com . Stačí změnit port z 81 na 81 při nastavování hostitele proxy.

Krok 8 – Použití Nginx Proxy Manager s jinou webovou aplikací Docker

Nyní, když jsme nainstalovali správce proxy, je čas jej použít. První věc, kterou uděláme, je použít ji k hostování jiné webové aplikace Docker. Za tímto účelem nainstalujeme blog Ghost. Pokud se chcete dozvědět více, podívejte se na náš tutoriál o instalaci Ghost pomocí Dockeru na serveru Ubuntu.

Vytvořte další adresář pro svůj blog Ghost.

$ mkdir ~/ghost

Přepněte se do adresáře Ghost.

$ cd ~/ghost

Vytvořte dva adresáře pro obsah a databázi.

$ mkdir {content,mysql}

I když používáte stejný obraz MySQL, měli byste uchovávat data a jejich kontejnery odděleně od správce proxy. Pomůže vám to izolovat všechny problémy, na které byste mohli narazit, a v případě potřeby vám umožní přesunout věci.

Vytvořte a otevřete soubor Docker Compose pro úpravy.

$ nano docker-compose.yml

Vložte následující kód. Nahraďte example.com s vaším skutečným názvem domény pro váš blog Ghost. Pokud chcete dostávat e-maily, zadejte podrobnosti SMTP. Pokud je nepotřebujete, můžete je odstranit.

version: '3.3'
services:

  ghost-app:
    image: ghost:latest
    container_name: ghost-app
    restart: always
    depends_on:
      - ghost-db
    environment:
      url: https://ghost.example.com
      database__client: mysql
      database__connection__host: ghost-db
      database__connection__user: ghost
      database__connection__password: ghostdbpass
      database__connection__database: ghostdb
      mail__transport: SMTP
      mail__options__host: {Your Mail Service host}
      mail__options__port: {Your Mail Service port}
      mail__options__secureConnection: {true/false}
      mail__options__service: {Your Mail Service}
      mail__options__auth__user: {Your User Name}
      mail__options__auth__pass: {Your Password}
    volumes:
      - /home/<username>/ghost/content:/var/lib/ghost/content
    networks:
      - npm-nw
      - ghost-network

  ghost-db:
    image: mariadb:latest
    container_name: ghost-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghostdbpass
      MYSQL_DATABASE: ghostdb
    volumes:
      - /home/<username>/ghost/mysql:/var/lib/mysql
    networks:
      - ghost-network

networks:
  ghost-network:
  npm-nw: 
    external: true

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Jak můžete vidět, propojili jsme kontejner Ghost se správcem proxy Nginx pomocí externí sítě npm-nw . Tímto způsobem nevystavujeme Ghostovy porty systému. Použili jsme také interní síť ghost-network pro připojení naší aplikace Ghost a odpovídajícího databázového kontejneru.

Spusťte kontejner.

$ docker-compose up -d

Konfigurace Ghost v Nginx Proxy Manager

Nyní musíme nastavit reverzní proxy pro naši instalaci Ghost. Otevřete Nginx Proxy manager ve svém prohlížeči, přejděte na Dashboard>> Hosts>> Proxy Host a přidejte nového hostitele proxy.

Přidejte název domény, který jste vybrali pro svůj blog Ghost. Pro Název hostitele/IP hodnotu, zadejte název svého kontejneru. V tomto případě by to byla ghost-app . Nemůžeme sem přidat IP adresu, protože jsme serveru nezpřístupnili port Ghost a proxy server Nginx nebude schopen dosáhnout Ghost přes IP. Proto používáme název kontejneru, ke kterému má NPM přístup pomocí sítě Docker npm-nw , který jsme vytvořili. Použijte 2368 jako port, výchozí port používaný Ghost Blogem. Zkontrolujte ostatní možnosti, jak je znázorněno na snímku obrazovky výše.

Dále se přepněte na kartu SSL a podle kroku 6 vytvořte nový certifikát SSL. Protože budete nahrávat obsah na svůj blog Ghost, bylo by dobré nastavit maximální velikost nahrávaných souborů.

Naštěstí vám NPM umožňuje přidávat vlastní konfigurace. Přepněte na Pokročilé a zadejte client_max_body_size 50m; v krabici.

Klikněte na tlačítko Uložit dokončete přidávání hostitele proxy. Ke svému blogu Ghost byste měli mít přístup přes adresu URL https://ghost.exampl.com

Krok 9 – Použijte Nginx Proxy Manager jako službu přesměrování

Podívejme se, jak můžete pomocí NPM snadno přesměrovat jednu doménu na druhou. Chcete-li tak učinit, navštivte Hlavní panel>> Hostitelé>> Hostitelé přesměrování . Odtud klikněte na Přidat hostitele přesměrování začněte.

Zadejte název domény, kterou chcete přesměrovat. A zadejte doménu přesměrování. Doména přesměrování by již měla být nakonfigurována. Ponechte schéma jako automatické. V závislosti na vašich požadavcích můžete zvolit http nebo https . Vyberte správný Kód HTTP a zaškrtněte Zachovat cestu a Blokovat běžné zneužití možnosti. Pokud používáte schéma auto nebo https, ujistěte se, že jste vybrali nebo vytvořili certifikát SSL pomocí NPM. Klikněte na Uložit dokončete přidávání vašeho hostitele přesměrování.

Vaše doména example.com by měl začít přesměrovávat na blog.example.com .

Další použití Nginx Proxy Manager

Existují další dva způsoby, jak můžete Nginx Proxy Manager používat. Můžete jej použít jako hostitele 404, což znamená, že můžete použít doménu jako vstupní stránku, která vyhledávačům ukáže, že stránky domény neexistují. Krok zahrnuje pouze zadání domény a nastavení SSL pro ni. Můžete to také využít jako příležitost ke sledování protokolů pro název domény a zobrazení návštěvnosti odkazujících stránek.

Další funkcí je použití NPM jako hostitele streamu. Tuto funkci můžete použít k předání portů TCP/UDP jinému počítači v síti. To je užitečné, pokud hostujete herní servery. Jediné, co vyžaduje, je zadat příchozí port, přesměrovací doménu nebo IP adresu, přesměrovací port a vybrat typ portu.

Použijte Nginx Proxy Manager k hostování statického webu

Nginx Proxy Manager může také hostovat jednoduché statické nebo dynamické webové stránky. Chcete-li tak učinit, přidejte nového hostitele proxy a zvolte 127.0.0.1 jako Přesměrovat doménu a 80 jako port .

V části Pokročilé zadejte konfiguraci určující kořenový adresář. Ujistěte se, že je kořenový adresář webu připojen v počáteční konfiguraci psaní Dockeru. Zde používáme /data/static adresář pro hostování našich statických webových stránek.

Klikněte na Uložit dokončit a váš web by měl být přístupný. Podobně můžete hostovat jakýkoli typ webu pomocí správce proxy.

Krok 10 – Různé funkce

Použití funkce řízení přístupu Nginx Proxy Manager

Pomocí funkce Přístupové seznamy NPM můžete povolit ověřování HTTP nebo blokovat rozsahy IP adres. Otevřete NPM a navštivte Dashboard>> Přístupové seznamy stránku.

Klikněte na Přidat přístupový seznam začněte.

Konfiguraci Access List (ACL) můžete pojmenovat. The Satisfy Any je-li zaškrtnuta, povolí přístup, pokud klient splní některou ze zadaných podmínek. Pokud klient projde autentizací HTTP, ale může selhat v přístupu založeném na IP, bude povolen. Ale pokud Spokojit všechny není zaškrtnutá, klient bude muset splnit všechny podmínky.

Předat ověření hostiteli funkce předá funkci ověřování hostitelskému serveru.

Dále přejděte na Autorizaci tab. Zde můžete vytvořit uživatelské jméno a heslo pro metodu HTTP autentizace. Chcete-li přidat více než jednoho uživatele, klikněte na tlačítko Přidat knoflík. Můžete přidat maximálně 5 uživatelů. A u tlačítka Přidat je chyba, takže nejprve použijte tlačítko a poté vyplňte podrobnosti. Pokud vyplníte podrobnosti a později kliknete na tlačítko pro přidání dalšího uživatele, vymaže se předchozí uživatelská data.

Přepněte na Přístup tab. Zde můžete nastavit, kterým IP adresám má být udělen nebo odepřen přístup.

Klikněte na Uložit dokončit.

Chcete-li používat tento přístupový seznam, musíte jej vybrat při přidávání hostitele proxy. Stejně jako v příkladu pro Ghost Blog níže jsme vybrali náš seznam přístupových práv.

Povolit podporu pro více názvů domén

S rostoucím počtem hostitelů a domén může vašemu Nginxu docházet hashovací prostor nebo může nastat problémy s pamětí. K vyřešení tohoto problému můžeme přidat vlastní konfiguraci, která bude platit pro všechny hostitele.

Chcete-li to provést, vytvořte adresář custom uvnitř ~/nginx-proxy/data/nginx .

$ sudo mkdir ~/nginx-proxy/data/nginx/custom

Vytvořte a otevřete soubor http.conf uvnitř tohoto adresáře.

$ sudo nano ~/nginx-proxy/data/nginx/custom/http.conf

Vložte do něj následující řádky.

proxy_headers_hash_max_size 1024;
proxy_headers_hash_bucket_size 128;

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Nginx by měl tyto hodnoty automaticky akceptovat. Pokud se tak nestane, můžete restartovat kontejner NPM pomocí následujícího příkazu.

$ docker restart npm-app

Výchozí vstupní stránka přesměrování

V kroku 6 se po zadání adresy URL zobrazí výchozí stránka http://<yourserverIP> . Pokud to chcete změnit, je to možné. Chcete-li to provést, přejděte na stránku Nastavení . Klikněte na tři tečky na pravé straně a klikněte na Upravit tlačítko.

Pomocí možnosti Vlastní stránka můžete vstupní stránku nastavit tak, aby fungovala jako stránka 404, přesměrovává stránka nebo na ni přidat vlastní HTML. . Pokud vyberete možnost Přesměrovat , budete muset zadat cílovou adresu URL.

Toto je vlastní kód HTML, který jsme použili pro náš účel.

<!doctype html>
<html>
  <head>
    <title>Nothing Here</title>
    <meta charset="utf-8"/>
    <meta name="robots" content="noindex"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
      body { 
          text-align: center; 
          padding: 20px; 
          font: 20px Helvetica, sans-serif; 
          color: #333; 
        }
      @media (min-width: 768px){
          body{ padding-top: 150px; 
        }
      }
      h1 { 
          font-size: 50px; 
        }
      article { 
          display: block; 
          text-align: left; 
          max-width: 650px; 
          margin: 0 auto; 
        }
    </style>
  </head>
  <body>
    <article>
        <h1>Oops!</h1>
        <div>
            <p>Sorry for the inconvenience but you are not supposed to be here. You won't get anything here. This page was set for HowtoForge Nginx Proxy Manager Guide.  Maybe, someday it will show something.</p>
        </div>
    </article>
  </body>
</html>

Klikněte na Uložit dokončit. Vaše vstupní stránka by měla být změněna na něco jako níže.

Krok 11 – Aktualizace Nginx Proxy Manager

Chcete-li aktualizovat NPM, nejprve zastavte kontejnery.

$ cd ~/nginx-proxy
$ docker-compose down --remove-orphans

Stáhněte si nejnovější obrázky.

$ docker-compose pull

Spusťte kontejnery znovu.

$ docker-compose up -d

Závěr

Tímto končí náš tutoriál, kde jste nainstalovali Nginx Proxy Manager a naučili jste se, jak jej používat k přidání hostitele proxy pro jiný kontejner dockeru, používat jej jako službu přesměrování a řídit pomocí něj přístup. Pokud máte nějaké dotazy, napište je do komentářů níže.


Ubuntu
  1. Jak nastavit a používat NGINX jako reverzní proxy

  2. Jak nainstalovat a nakonfigurovat Nginx na CentOS 8

  3. Jak nainstalovat a používat Docker v Ubuntu 20.04

  1. Jak nainstalovat a používat Docker na Ubuntu 20.04

  2. Jak nainstalovat a nakonfigurovat Nginx na Ubuntu 20.04

  3. Jak nainstalovat a používat Docker na Ubuntu 18.04

  1. Jak nainstalovat a používat Docker Compose na Ubuntu 18.04

  2. Jak nainstalovat a používat Docker na CentOS 7

  3. Jak nainstalovat a používat Docker na Debian 9