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)





