Перенаправить http на https, но исключить некоторые

Я использую nginx и хочу знать, возможно ли это сделать.

Теперь, чтобы управлять своим виртуальным хостом, я создаю их отдельно в / etc / nginx / sites-available ( активируйте их после)

mydomain.com
subdomain.mydomain.com
subdomain1.mydomain.com
anotherdomain.com

Итак, чтобы перенаправить http на https, я создаю vhost перенаправления, который содержит:

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://$host$request_uri;
}

mydomain.com, а все остальные поддомены находятся под https.

Но проблема в anotherdomain.com, я не не хочу перенаправлять его на https. А вот как это сделать не знаю. У меня есть идея:

Создайте только на vhost, который содержит всю конфигурацию, и сделайте следующее:

# Config of anotherdomain.com

# Redirect all domain/subdomain after this part to https
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://$host$request_uri;
}

# Config of mydomain.com
# Config of subdomain.com
# Config of subdomain1.com

Это будет работать как своего рода переопределение, как в CSS?

Спасибо за ваш отзыв.

0
задан 21 August 2017 в 22:24
2 ответа

Обычно у вас будет один блок пересылки для каждого домена / поддомена. Перенаправление с использованием default_server - это не то, что я видел раньше, хотя в большинстве случаев это, вероятно, нормально.

Поэтому вместо использования сервера по умолчанию вы определяете блок следующим образом, либо только для рассматриваемого домена, либо для каждого домена

server {
  listen 80;
  server_name anotherdomain.com;

  location / {
    // whatever
  }
}

Это переопределит блок default_server. Лично я бы определил блоки пересылки для каждого веб-сайта по доменам, просто потому, что это кажется более аккуратным.

server {
  listen 80;
  server_name example.com;
  return 301 https://example.com$request_uri;
}
1
ответ дан 4 December 2019 в 12:19

default_server - это виртуальный хост, используемый, когда запрос не соответствует никакому другому виртуальному хосту.

Таким образом, вам нужно определить виртуальный хост, который соответствует другому домену. com на порту 80. Затем nginx будет использовать эту конфигурацию вместо вашего виртуального хоста default_server .

2
ответ дан 4 December 2019 в 12:19

Теги

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