Det er en udbredt løsning at bruge NGINX som reverse proxy. For at kon­fi­gu­re­re det skal du blot in­stal­le­re NGINX, oprette en kon­fi­gu­ra­tions­fil og justere ser­ve­rindstil­lin­ger­ne. Du kan også teste, om op­sæt­nin­gen er lykkedes, ved hjælp af Gunicorn.

Sådan kon­fi­gu­re­res NGINX som en reverse proxy

Reverse proxy­ser­ve­re kan bidrage til at øge sik­ker­he­den, flek­si­bi­li­te­ten og res­sour­ce­til­gæn­ge­lig­he­den. De placeres mellem klienten og serveren og er ikke synlige for brugerne. NGINX-reverse-proxy­ser­ve­ren er en stærkt anbefalet løsning til indgående an­mod­nin­ger. Nedenfor forklarer vi, hvordan du in­stal­le­rer og kon­fi­gu­re­rer den på Ubuntu 22.04.

Hvad er sy­stem­kra­ve­ne til NGINX som reverse proxy?

For at kon­fi­gu­re­re en NGINX-reverse-proxy på Ubuntu 22.04 skal du bruge følgende:

  • En fuldt kon­fi­gu­re­ret Ubuntu-server
  • Serverens IP-adresse eller Unix-do­mæ­neso­ck­et
  • Domænet for din server
  • sudo ret­tig­he­der til serveren

In­stal­la­tion af NGINX som reverse proxy

Start med at opdatere dit pak­ke­repo­si­to­ri­um via ter­mi­na­len, så du får adgang til de nyeste pakker. Installer derefter NGINX ved hjælp af kom­man­do­en apt install. Her er koden:

$ sudo apt update
$ sudo apt install nginx
bash

Bekræft med [Y] og tryk på [Enter] for at gemme indstil­lin­ger­ne.

Kon­fi­gu­rer derefter din firewall, så NGINX har adgang til din server. Du kan bruge følgende kommando til at tilføje en und­ta­gel­se:

$ sudo ufw allow 'Nginx HTTP'
bash

Kon­trol­ler derefter, at in­stal­la­tio­nen er gen­nem­ført korrekt:

$ systemctl status nginx
bash

Hvis NGINX er in­stal­le­ret korrekt, vil du få et resultat, der ser sådan ud:

nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Active: active (running) since Mon 2024-06-24 06:52:46 UTC; 39min ago
         Docs: man:nginx(8)
    Main PID: 9919 (nginx)
        Tasks: 2 (limit: 2327)
      Memory: 2.9M
          CPU: 50ms
      CGroup: /system.slice/nginx.service
                 ├─9919 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
                 └─9920 "nginx: worker process"
bash

Op­ret­tel­se af kon­fi­gu­ra­tions­fi­len og til­pas­ning af serveren

Nu kan du kon­fi­gu­re­re din ser­ver­blok for at forberede NGINX-re­ver­se­proxy­en til dit system. For at gøre det skal du oprette og åbne en ny kon­fi­gu­ra­tions­fil med tek­ste­di­to­ren Nano. Indtast følgende kommando, og sørg for at erstatte plads­hol­de­ren »your_domain« med navnet på dit domæne:

$ sudo nano /etc/nginx/sites-available/your_domain
bash

Når filen er åben, skal du indsætte følgende indhold. Erstat plads­hol­der­ne »your_domain« og »server_address« med domænet og IP-adressen eller Unix-do­mæ­neso­ck­et for din server:

server {
    listen 80;
    listen [::]:80;
    server_name your_domain www.your_domain;
        
    location / {
        proxy_pass http://server_address;
        include /etc/nginx/proxy_params;
    }
}
txt

Gem og luk filen. Det viste indhold er stan­dardop­sæt­nin­gen for NGINX. Den bruger port 80 til at besvare an­mod­nin­ger fra dit domæne og din server. proxy_pass er en vigtig komponent for NGINX’s funktion som reverse proxy. Du kan også kon­fi­gu­re­re yder­li­ge­re servere, hvis det er nød­ven­digt.

Opret derefter et link til den mappe sites-enabled som NGINX åbner i starten. Brug følgende kommando, og husk at erstatte plads­hol­de­ren »your_domain«:

$ sudo ln -s /etc/nginx/sites-available/your_domain/etc/nginx/sites-enabled/
bash

Kon­trol­ler, om der er fejl i din kon­fi­gu­ra­tion:

$ sudo nginx -t
bash

Hvis der ikke vises nogen fejl­med­del­el­ser, kan du nu genstarte NGINX-re­ver­se­proxy­en for at anvende indstil­lin­ger­ne. Det gør du ved at indtaste følgende kommando:

$ sudo systemctl restart nginx
bash

Du er nu færdig med at kon­fi­gu­re­re NGINX som en reverse proxy. I det næste afsnit forklarer vi, hvordan du tester proxyen. Denne test er dog valgfri.

Kontrol af NGINX-reverse-proxy med Gunicorn

Hvis du vælger at teste din NGINX-reverse-proxy, kan du som regel bruge din egen server til det. Hvis du bruger din egen server, skal du åbne den via kom­man­do­linj­en. Al­ter­na­tivt kan du bruge den lette HTTP-webserver Gunicorn, som fungerer rigtig godt sammen med en NGINX-reverse-proxy. Start med at opdatere pakkerne og in­stal­le­re serveren:

$ sudo apt update
$ sudo apt install gunicorn
bash

Opret derefter en simpel funktion, der skal sendes som et HTTP-svar til din browser. Brug igen nano:

$ nano test.py
bash

Åbn filen, og indsæt følgende kode:

def app(environ, start_response):
	start_response("200 OK", [])
	return iter([b"This is a test"])
txt

Gem og luk derefter filen. Start derefter Gunicorn, og åbn test­mo­du­let:

$ gunicorn --worker=2 test:app
bash

Re­sul­ta­tet bør se no­gen­lun­de sådan her ud:

[2024-06-24 07:09:29 +0000] [10568] [INFO] Starting gunicorn 20.1.0
[2024-06-24 09:14:37 +0000] [10568] [INFO] Listening at: http://127.0.0.1 (10568)
[2024-06-24 09:14:37 +0000] [10568] [INFO] Using worker: sync
[2024-06-24 09:14:37 +0000] [10569] [INFO] Booting worker with pid: 10569
[2024-06-24 09:14:37 +0000] [10570] [INFO] Booting worker with pid: 10570
bash

Det er be­kræf­tel­sen på, at Gunicorn kom­mu­ni­ke­rer med adressen http://127.0.0.1:8000. Til sidst skal du åbne din browser og gå til det domæne, du har kon­fi­gu­re­ret med NGINX. NGINX-re­ver­se­proxy­en vil vise med­del­el­sen »Dette er en test«.

Gå til ho­ved­me­nu­en