Задать вопрос
@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 был пустым, но я сомневаюсь, что это может повлиять на такую выдачу
  • Вопрос задан
  • 119 просмотров
Подписаться 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, это гораздо дешевле по ресурсам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽