Nginx przekierowanie forum - z www na bez www z szyfrowaniem https

Krzysztof Gał
Nginx przekierowanie forum - z www na bez www z szyfrowaniem https

Posiadając stronę www zwykle zależy nam aby miała ona jeden adres, w tym celu musimy wykonać odpowiednie przekierowania.

W sieci można szybko znaleźć formułkę aby zrobić przekierowanie strony z www na adres "bez www", oraz jak wykonać przekierowanie ze zwykłego połączenia na szyfrowane połączenie https.

Generalnie znaleziony kod konfiguracji będzie działać poprawnie, chyba że na naszej maszynie mamy kilka stron, wtedy możemy natknąć się na bardzo niespodziewane zachowanie w postaci przekierowania na inną, zwykle pierwszą w konfiguracji lub na ustawioną jako domyślną stronę.

Błąd taki może być nawet trudny do zauważenia, może to wyglądać na przykład w ten sposób, że wpisując:

  • http://systemd.pl - jest ok,
  • https://systemd.pl - jest ok,
  • http://www.systemd.pl - jest ok,
  • https://www.systemd.pl - boom, otworzyła się nie ta strona.

Jak zatem uniknąć takiego niepożądanego zachowania? Najbardziej pewnym rozwiązaniem jakie znalazłem w takiej sytuacji jest utworzenie trzech bloków server dla naszej strony www.

Pierwszy to standardowa konfiguracja nginx dla naszej aplikacji i ta na którą chcemy zrobić przekierowania.

server {
listen 443 ssl;
server_name systemd.pl
# konfiguracja aplikacji
}

Drugi blok będzie odpowiedzialny za przekierowanie wersji "z www".

server {
listen  80;
listen  443 ssl;
server_name www.systemd.pl;
return 301 https://systemd.pl$request_uri;
}

Trzeci blok to całkowicie standardowe przekierowanie naszej "zwykłej" wersji na szyfrowaną.

server {
listen 80;
server_name systemd.pl;
return 301 https://systemd.pl$request_uri;
}

Zastosowanie takiej konfiguracji gwarantuje, że przy dodawaniu kolejnej strony na serwer nie będziemy mieć takiego niespodziewanego "fakapu" z dziwnymi przekierowaniami.

Blog Comments powered by Disqus.