Задать вопрос
@DmitryRise

Django + Nginx почему конфигурация выдает ад при индексации поисковыми системами?

Приветствую, возникла странная проблема. На сервере располагается десяток сайтов на Django на демонах gunicorn'а + Nginx
Проблема состоит в том, что после размещения нового сайта, он начал индексироваться под адресами других проектов. К примеру.
Новый сайт на сервере имеет доменное имя www.1.ru и тайтл "Сайт 1"
В поисковой системе появляется выдача такого содержания
www.2.ru Сайт 1
www.3.ru Сайт 1
При переходе по этим адресам вылетает 404
Конфигурация Nginx
server {
    server_name www.domain.ru domain.ru;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/domain/domain/;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/domain/domain/domain.sock;
    }

    gzip on;
    gzip_disable "msie6";
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;



    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/domain.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = domain.ru) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = www.domain.ru) {
        return 301 https://domain.ru;
    }
    server_name www.domain.ru domain.ru;
    listen 80;
    return 404; # managed by Certbot
}

Подскажите, пожалуйста, в чем может быть проблема?
Обнаружил, что в сеттингах проекта ALLOWED_HOSTS был пустым, но я сомневаюсь, что это может повлиять на такую выдачу
  • Вопрос задан
  • 116 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
@dkopitsa
разработчик-интроверт
добавьте default server для nginx-а с заглушкой, тогда все запросы будут идти на него.
https://nginx.ru/ru/docs/http/request_processing.html
server {
    listen      80 default_server;
    server_name example.net www.example.net;
    ...
}

Без этого все запросы идут на первый указанный сервер для данного ip/порта, а это django.
Плюс у самой джанги была выключена проверка корректности заголовка (ALLOWED_HOSTS пустой).
Настраивать рекомендую на nginx, это гораздо дешевле по ресурсам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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