Назад | Перейти на главную страницу

Nginx return 301 перенаправляет все домены

У меня есть несколько доменов на моем сервере, на котором выполняется установка nginx следующим образом:

server {
    listen 80;
    server_name domain1.com www.domain1.com;
    root /var/www/domain1/public_html;
    index index.php index.html index.html;
}

server {
    listen 80;
    server_name domain2.com www.domain2.com;
    return 301 https://plusgoogle.com/+somepage;
}

server {
    listen 80;
    root /var/www/other_domains/public_html;
    index index.php index.html index.html;
}

Каждый серверный блок находится в отдельном файле (domain1.conf, domain2.conf и т. Д.)

Теперь к проблеме:

Я немного запутался, я мог понять, будет ли domain2 загружать корень других доменов, но почему другие домены перенаправляют на 301, когда я указал server_name в конфигурации вместе с 301?

Спасибо за помощь

Обновить

Вы должны прочитать, как nginx обрабатывает запросы.

В вашем случае запросы с неизвестным доменом попадают в дефолт сервер. Обычно первый, но может быть и любой. Чтобы четко определить сервер по умолчанию, вы должны использовать default_server флаг в listen директива. Итак, в вашем серверном блоке, который должен перехватить все остальные домены, вы должны написать:

listen 80 default_server;