Nginx – Přesměrování kořenové cesty na specifickou URL

By | 26/10/2024

Last Updated on 26/10/2024 by administrator

Nginx – Přesměrování kořenové cesty na specifickou URL

Nginx – Přesměrování kořenové cesty na specifickou URL

Motivace:

Článek pojednává jak efektivně přesměrovat uživatele z hlavní stránky na specifickou podstránku pomocí webového serveru NGINX. Přesměrování je důležitým nástrojem pro zlepšení uživatelského zážitku a optimalizaci SEO. Ukážeme si, jak upravit konfiguraci NGINX tak, aby každé volání kořenové URL přesměrovalo uživatele na /p/test2, čímž zajistíme, že budou vždy nasměrováni na správné místo.

Praktickým cílem toho článku je, aby při zadání IP adresy v prohlížeči např. http://192.168.0.140 či https://192.168.0.140 došlo k přesměrování na https://192.168.0.140/p/test.

Implementace [1]:

Takto vypadá původní konfigurace v souboru /etc/nginx/sites-available/etherpad:

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  _; # set domain name here if using one

    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    include /etc/nginx/snippets/ssl.conf;

    location / {
        proxy_pass         http://etherpad;
        proxy_buffering    off; 
        proxy_set_header   Host $host;
        proxy_pass_header  Server;

        # Note you might want to pass these headers etc too.
        proxy_set_header    X-Real-IP $remote_addr; 
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Forwarded-Proto $scheme; 
        proxy_http_version  1.1; 

        # WebSocket proxying
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection $connection_upgrade;
    }
}

# we're in the http context here
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    return 301   https://$host$request_uri; # enforce HTTPS with permanent redirect
}

1. Přidání přesměrování v HTTPS server bloku:

Tato část zajistí, že požadavky na https://192.168.0.140/ budou přesměrovány na https://192.168.0.140/p/test

location = / {
    return 301 https://$host/p/test;
}

2. Úprava HTTP server bloku (port 80):

Přidáno podobné přesměrování pro případ, kdy uživatel přistupuje k serveru přes HTTP, aby se správně přesměroval na správnou HTTPS URL:

location = / {
    return 301 https://$host/p/test;
}

Výsledná konfigurace i s úpravami vypadá takto níže. Tučným písmem jsou provedeny změny v původní konfiguraci v souboru /etc/nginx/sites-available/etherpad:

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  _; # set domain name here if using one

    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    include /etc/nginx/snippets/ssl.conf;

    location / {
        proxy_pass         http://etherpad;
        proxy_buffering    off; 
        proxy_set_header   Host $host;
        proxy_pass_header  Server;

        # Note you might want to pass these headers etc too.
        proxy_set_header    X-Real-IP $remote_addr; 
        proxy_set_header    X-Forwarded-For $remote_addr; 
        proxy_set_header    X-Forwarded-Proto $scheme; 
        proxy_http_version  1.1; 

        # WebSocket proxying
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection $connection_upgrade;
    }

      location = / {
        return 301 https://$host/p/test;
    }
}

# we're in the http context here
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    #return 302   https://$host$request_uri; # change this to 301 if using a domain

    location = / {
        return 301 https://$host/p/test;
    }
}

Provést kontrolu syntaxe NGINX konfigurace se provede příkazem níže:

sudo nginx -t

Nakonec provést restart NGINX:

sudo systemctl restart nginx

Tímto způsobem bude zajištěno, že všechny požadavky na http://192.168.0.140 nebo https://192.168.0.140 budou přesměrovány na https://192.168.0.140/p/test1.

Zdroj:

[1] https://stackoverflow.com/questions/47301639/nginx-redirect-using-return-301

Další články NGINX:

Nginx – Konfigurace Load Balanceru (NGINX Load Balancer)

Nginx – Konfigurace Load Balanceru (NGINX Load Balancer)

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *