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)