Простой редирект c www-версии сайта при использовании HTTPS

Многие пользольватели зачастую по привычке вводят в начале любого адреса www. Поэтому целеособразно сделать редирект с www.domain.xyz на domain.xyz. Наоборот можно сделать аналогичным образом: Но зачем? Ведь более короткий адрес банально эстетически красивее.

Если сайт не использует HTTPS, то для редиректа достаточно простого рерайта (rewrite), однако в нашем случае понадобится дополнительный SSL-сертификат для www-версии (многие регистраторы предоставляют его беслпатно вместе с основным).

Вся настройка сводится к созданию отдельного виртуального хоста и получению сертификата. В свою очередь, хост будет заниматься только редиректом. Более подробно о получении сертификата можно прочитать здесь.

Переходим в директорию конфигов NGINX и создаем новый файл конфигурации:

cd /etc/nginx
sudo nano sites-available/www.domain.xyz.conf

Используем этот конфиг:

server {
	listen 80;
 
	# Поддержка IPv6
	# listen [::]:80;
 
	server_name www.domain.xyz;
 
	# Редирект с http://www.domain.xyz на https://www.domain.xyz
	return 301 https://$server_name$request_uri;
}
 
server {
	listen 443 ssl http2;
 
	# Поддержка IPv6
	# listen [::]:443 ssl http2;

	server_name www.domain.xyz;
 
	### START OF SSL CONFIGURATION ###
	### https://krasovsky.me/2016/nginx-ssl
 
	ssl on;
 
	ssl_certificate /etc/letsencrypt/live/www.domain.xyz/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/www.domain.xyz/privkey.pem;
	ssl_trusted_certificate /etc/letsencrypt/live/www.domain.xyz/fullchain.pem;
	ssl_dhparam /etc/letsencrypt/live/www.domain.xyz/dhparam.pem;
 
	### END OF SSL CONFIGURATION ###
 
	add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
 
	# Основной редирект с https://www.domain.xyz на https://domain.xyz
	return 301 https://domain.xyz$request_uri;
}```
Создаем симлинк для нового виртуального хоста:
```bash
sudo ln -s sites-available/www.domain.xyz.conf sites-enabled/www.domain.xyz.conf

Перезапускаем сервер:

# Если systemd
sudo systemctl restart nginx
 
# Остальное
sudo service restart nginx