Základní Nginx proxy

navody 12. čvc 2021

Nginx je softwarový webový server s load managment a reverzní proxy s otevřeným zdrojovým kódem. Pracuje s protokoly HTTP, SMTP, POP3, IMAP a SSL. Zaměřuje se především na vysoký výkon a nízké nároky na paměť. Takto zní definice z wikipedie. V praxi se nginx využívá hlavně jako proxy server, který směruje weby na správné adresy a porty a případně je zaštiťuje ssl certifikátem. My si dnes ukážeme základní konfiguraci takové proxy. Návod je zaměřený hlavně na konfiguraci a ta proběhla v docker kontejneru, ale stejná bude i v případě instalace na čistý linux.

Fiktivní weby, které budeme zadávat do proxy:

  • domena1.cz
  • domena2.cz
  • domena3.cz

Fiktivní servery, kde běží apache2 s weby pro domény:

  • www1 a www2 - 192.168.1.10
  • www3 - 192.168.1.11

Porty fiktivních webů:

  • www1 - 8080
  • www2 - 8081
  • www3 - 8080

Server, kde běží nginx proxy:

  • 192.168.1.2

Nginx proxy porty:

  • 80
  • 443

Nastavení nginx proxy

  • Otevřeme si /etc/nginx/nginx.conf
  • Do http sekce nastavení si přidáme parametr, který nám zvýší počet znaků v doméně zadávané do konfigurace jako servername
    • server_names_hash_bucket_size 128;
  • Tuto změnu uložíme a zavřeme soubor
  • Přesuneme se do /etc/nginx/conf.d/ a vytvoříme si zde soubor proxy.conf
  • Otevřeme si nově vytvořený konfigurační soubor a zadáme následující
    • server {
          listen 80;
          listen [::]:80;
          server_name domena1.cz;
      
          location / {
              proxy_pass http://192.168.1.10:8080;
          }
      }
      server {
          listen 80;
          listen [::]:80;
          server_name domena2.cz;
      
          location / {
              proxy_pass http://192.168.1.10:8081;
          }
      }
      server {
          listen 80;
          listen [::]:80;
          server_name domena3.cz;
      
          location / {
              proxy_pass http://192.168.1.11:8080;
          }
      }
      
  • Uložíme a soubor zavřeme
  • Nyní musíme službu nginx reloadnout aby si nabrala nový konfigurační soubor a aplikovala změny
    • service nginx reload

Nastavení DNS

Nyní chceme aby domény směrovali na proxy server, který je pak dál bude směrovat na ty správné apache servery a jejich porty, proto musíme nastavit DNS pro domény.

  • Otevřeme si nastavení DNS pro doménu domena1.cz (tento postup lze replikovat i na zbylé domény)
  • Vybereme si nový záznam typu A a správně vyplníme
    • Název: domena1.cz
    • TTL: 300
    • Typ: A
    • Hodnota: 192.168.1.2
  • Uložíme záznam a necháme aplikovat změny - tyto změny se většinou propíšou do hodiny, pokud se jedná o veřejný DNS poskytovatele

Nyní když si zadáme do prohlížeče http://domena1.cz, tak bude mít následující flow:

  • http://domena1.cz -> 192.168.1.2:80 -> 192.168.1.10:8080

Štítky

Výborně! Nyní jste odběrateli.
Výborně! Dokončete platbu pro plný přístup.
Vítejte zpět! Úspěšně jste se přihlásili.
Úspěch! Váš účet je nyní plně aktivován, nyní máte přístup ke všemu obsahu!