Настройка редиректов www ✓ без www и HTTP ✓ HTTPS в то же время я столкнулся с проблемой дублирования, которую мне не удалось преодолеть.
На моем домене - пусть будет пример.com
У меня есть веб-сайт с основным именем другой.example.com
. Я хочу, чтобы запросы пример.com
, www.example.com
, и www.another.example.com
быть перенаправленным на другой.example.com
, и все HTTP-запросы должны одновременно перенаправляться на HTTPS; Я также хочу поддерживать HTTP/2 и IPv6.
У меня нет проблем с тем, чтобы заставить это работать, но мне не удается избавиться от дублирования существенной части файла конфигурации (а именно, настроек сертификата HTTPS). Все попытки уменьшить дублирование приводят к прекращению работы одного, нескольких или всех перенаправлений (иногда вместе с HTTP/2).
Пожалуйста, взгляните на конфиг и предложите, как его почистить:
сервер {
слушать 80;
слушать [::]:80;
имя_сервера www.another.example.com www.example.com other.example.com example.com;
вернуть 301 https://another.example.com$request_uri;
}
сервер {
слушать 443;
слушать [::]:443;
имя_сервера www.another.example.com www.example.com example.com;
вернуть 301 https://another.example.com$request_uri;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
включить /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
сервер {
имя_сервера другой.пример.com;
корень /usr/share/nginx/another.example.com;
индекс index.html;
место расположения / {
try_files $uri $uri/ =404;
}
слушать [::]:443 ssl http2;
слушать 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
включить /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}