Как настроить nginx для перенаправления всех запросов с псевдонимов домена на основной домен?

У меня есть сервер nginx, который отвечает на несколько доменов, и я хочу перенаправить все запросы в основной домен.

Пример: сайт отвечает за xxx xxx.example.com yyy.example.com $hostname для обоих http а также https,

Я хочу настроить сервер таким образом, чтобы все запросы к другим доменным именам были перенаправлены на xxx.example.com,

3 ответа

Решение

Я думаю, что-то вроде этого должно работать:

set $primary_domain "xxx.example.com";
if ($host != $primary_domain) {
    rewrite ^ $scheme://$primary_domain permanent;
}

Наиболее эффективный и чистый способ сделать это - настроить два отдельных блока server{} - один для перенаправления, а другой (с каноническим именем) для фактической обработки запросов.

Пример конфигурации:

server {
    listen 80;
    listen 443 ssl;

    server_name xxx yyy.example.com $hostname;

    ssl_certificate ...
    ssl_certificate_key ...

    return 302 $scheme://xxx.example.com$request_uri;
}

server {
    listen 80;
    listen 443 ssl;

    server_name xxx.example.com;

    ssl_certificate ...
    ssl_certificate_key ...

    ...
}

Документация:

Вот вариант ансера Брентона Алкера, использующий $server_name переменная для повторного использования значения server_name директивы.

    server_name primary.tld secondary.tld;
    if ($host != $server_name) {
        rewrite ^ $scheme://$server_name permanent;
    }

Или, чтобы сохранить любые параметры запроса:

    server_name primary.tld secondary.tld;
    if ($host != $server_name) {
        rewrite ^/(.*) $scheme://$server_name/$1 permanent;
    }

Вот, $server_name относится к первичному имени сервера, которое является первым именем в server_name директива, а $host ссылается на имя хоста, указанное в HTTP-запросе.

Обратите внимание, что if оператор в конфигурации nginx не всегда делает то, что вы ожидаете, и некоторые его не одобряют. Смотрите также https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

Другие вопросы по тегам