Перенаправления Nginx: принудительное применение субдомена и SSL

Есть много вопросов по ServerFault, которые частично покрывают этот вопрос, но мне трудно собрать их вместе. У меня есть новый сервер nginx с установленным сертификатом Wildcard SSL. Все это прекрасно работает. Я хотел бы создать правила перенаправления, обеспечивающие соблюдение следующего:

1) Должен быть установлен www или субдомен. Итак, subdomain.domain.com и www.domain.com в порядке. домен. Мысли?

0
задан 22 July 2016 в 03:13
2 ответа

Я нашел ответ, потратив на это еще несколько часов сегодня утром. Вам понадобятся два дополнительных серверных блока: один для принудительного использования www, второй для обеспечения соблюдения https при сохранении поддомена с подстановочными знаками. Вот код:

server {
    listen 80;
    listen 443;
    server_name domain.com;
    return 301 https://www.domain.com$request_uri;
}

server {
    listen 80;
    server_name ~^(?<subdomain>.+)\.domain\.com$;
    return 301 https://$subdomain.domain.com$request_uri;
}

server {
    listen 443 default_server;
    listen [::]:433 default_server ipv6only=on;

... the rest of your HTTPS server configuration goes here ...

Первый блок ищет без www, независимо от того, HTTP это или нет. Это достаточно просто перенаправляет на www.domain.com. Второй блок использует регулярное выражение, чтобы поместить субдомен в переменную, а затем вернуться в тот же субдомен + домен, только с https. После этого,третий блок может содержать обычную конфигурацию сервера.

Надеюсь, это поможет!

1
ответ дан 4 December 2019 в 16:33

Мне кажется, вы явно пересылаете его на domain.com. Вы пробовали добавить www между https: // и $ server_name? Я этим и занимаюсь, и у меня есть учебник по подобным вещам. Примеры файлов конфигурации могут быть полезны.

server {
  listen 80;
  server_name *.domain.com;
  return 301 https://www.$server_name$request_uri;
}

Сообщите, как это работает, мы можем настроить его по мере необходимости.

0
ответ дан 4 December 2019 в 16:33

Теги

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