@thisall

Как проставить ssl сертификат для динамических поддоменов?

У меня есть конфиг для динамических поддоменов

server {
    server_name *.example.com;

    listen 443 ssl;
    
    root /var/www/platforms/$host;
    index index.php index.html index.htm;

    location / {
        root /var/www/platforms/$host;
        autoindex off;
    }
}


Для обычных поддоменов я проставляю ещё вот такой код для редиректа на https

server {
    server_name test.example.com;

    if ($host = test.example.com){
	    return 301 https://$host$request_uri;
    }

    listen test.example.com:80;
}


И всё работает как нужно, но если я пропишу для динамических поддоменов такой код

server {
    server_name *.example.com;

    if ($host = *.example.com){
	    return 301 https://$host$request_uri;
    }

    listen *.example.com:80;
}


То он выдаёт ошибку

host not found in "*.example.com:80"
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 2
Lynn
@Lynn
nginx, js, css
В 99% случаев надо просто писать listen 80; без всяких доменов и IP-адресов.

Домен в listen практически никогда нет смысла указывать. Чаще всего это не имеет никакого смысла и даже скорее приводит к непонятному (для новичков) поведению.

if тут тоже не нужен. Итого блок должен быть таким:
server {
    listen 80;
    server_name *.example.com;
    return 301 https://$host$request_uri;
}
Ответ написан
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Зачем у вас там if? Условие и так всегда будет выполняться, потому что этот блок ограничивается по именам server_name`ом.

Сделайте location / и вставьте в него редирект.

Ну и в листен у вас какая-то кривота, оставьте только порт.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы