LINUX.ORG.RU

Настройка nginx https с редиректом на (без WWW)

 , ,


0

2

Посмотрел сайты, а у многих https://www.example.com и https://example.com открывают одно и тоже содержимое. Я (откровенно говоря) не знаю, на сколько это нормально, но у себя решил сделать по нормальному. Но так и не получилось самому решить вопрос, запутался.

задача: получить такие редиректы

http://example.com      => https://example.com
http://www.example.com  => https://example.com
https://www.example.com => https://example.com

// полурабочий код, работает все кроме https://www.example.com => https://example.com

server {
     listen 00.00.00.00:80;
     server_name  example.com;
     return 301 https://example.com$request_uri;
}
server {
     listen 00.00.00.00:80;
     server_name www.example.com;
     return 301 https://example.com$request_uri;
}
#server {
#     listen 00.00.00.00:443 ssl;
#     server_name www.example.com;
#     return 301 https://example.com$request_uri;
#}
server {
    listen 00.00.00.00:443 ssl;
    server_name example.com;
    ssl on;
    ssl_certificate /etc/ssl/example.com.crt;
    ssl_certificate_key /etc/ssl/example.com.key;


# основные правила
        root /home/example.com/www;
        access_log /home/example.com/log/example.com.access.log;
        error_log  /home/example.com/log/example.com.error.log;

        server_name example.com
        gzip on;
...

Прошу помощи!

Чтобы работал редирект с https://www.example.com:443 куда-либо еще, вам нужно иметь валидный сертификат для адреса https://www.example.com. Судя по куску кода, который вы зацитировали, у вас такого сертификата или нет, или вы его не вписали в конфиг.

А еще первые два блока server можно объединить в один с помощью

server_name example.com www.example.com;

l0stparadise ★★★★★ ()
Последнее исправление: l0stparadise (всего исправлений: 2)
Ответ на: комментарий от morkovkin

Ну в таком случае в зацитированный кусок допишите сертификаты и все должно работать.

l0stparadise ★★★★★ ()
Ответ на: комментарий от l0stparadise

Спасибо, Вы правы! Нужно было только дописать сертификаты.

morkovkin ()
	if ($scheme = http) {
		return 301 https://$server_name$request_uri;
	}
annerleen ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.