Współczesne trendy w Internecie nakazują korzystanie z bezpiecznego protokołu komunikacyjnego https. Dlatego podczas migracji ważne jest, aby cały ruch przychodzący do portu http był automatycznie przekierowywany na https. Jest to ważny warunek nie tylko dla witryn, które mogą stracić część ruchu, ale także dla użytkowników, aby nikt nie mógł przerwać niezabezpieczonego połączenia. Następnie zobaczmy, jak skonfigurować przekierowanie z http na https Nginx.
Zalecamy użycie przekierowania z kodem statusu 301, który informuje wyszukiwarki lub przeglądarki, że bieżący link został zaktualizowany i powinien zostać zaktualizowany w ich bazie danych, na przykład w zakładkach przeglądarki. Jeśli otworzymy plik konfiguracyjny, możemy znaleźć dwie sekcje serwera, dla strony https i strony http. W sekcji http po prostu przekierowujemy wszystkie żądania na https za pomocą instrukcji return, a w drugiej sekcji przetwarzamy wszystko. Na przykład pierwsza sekcja:
server {
server_name losst.ru www.losst.ru;
charset off;
index index.php;
ssi on;
return 301 https://$host:443$request_uri;
set $root_path /var/www/losst/data/www/losst.ru;
root $root_path;
listen :80 default_server;
...
}
Druga sekcja śledzi żądania na porcie 433:
server {
server_name losst.ru www.losst.ru;
ssl on;
ssl_certificate "/var/www/losst/losst.ru_le2.crtca";
ssl_certificate_key "/var/www/losst/losst.ru_le2.key";
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
add_header Strict-Transport-Security "max-age=31536000;";
charset off;
index index.php;
set $root_path /var/www/losst/data/www/losst.ru;
root $root_path;
listen :443 default_server;
...
}
Jak widać, składnia w tym przypadku jest bardzo prosta i przejrzysta. Tak więc instrukcja return pozwala nam zwrócić niezbędne kody odpowiedzi serwera. W ten sposób zwracamy kod 301, stałe przekierowanie i adres URL, na który zamierzamy przekierować użytkownika. Oprócz dyrektywy return można użyć instrukcji rewrite, która wykonuje dokładnie te same czynności:
rewrite ^/(.*)$ https://losst.com/$1 permanent;
W składni wyrażeń regularnych można dodać domenę zamiast return 301. Można również użyć takiej konstrukcji bez oddzielnego bloku serwera:
if ($host ~* ^(losst.ru|www.losst.ru)$ ){
rewrite ^/(.*)$ https://losst.ru/$1 permanent;
}
Następnie należy zapisać plik i sprawdzić konfigurację Nginx. Do tego celu służy:
$ sudo nginx -t
Jeśli wszystko jest w porządku, uruchom ponownie Nginx:
$ sudo systemctl restart nginx
Sprawdź, jaką odpowiedź serwera otrzymujesz za pomocą curl:
$ curl -I losst.ru
Lub pozwolić narzędziu podążać pełną ścieżką przekierowania:
$ curl ILa losst.ru
Jak widać, konfiguracja przekierowania na https nginx jest dość prosta, praca jest wykonywana przez dodanie jednej linii do pliku konfiguracyjnego, reszta to wszystkie dodatkowe parametry.