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

By | 26/10/2024

Last Updated on 27/10/2025 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

Věřím, že článek Nginx – Přesměrování kořenové cesty na specifickou URL pomohl.

Další články NGINX:

Nginx – Konfigurace Load Balanceru (NGINX Load Balancer)

Nginx – Konfigurace Load Balanceru (NGINX Load Balancer)

Napsat komentář

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