• Nginx, как запретить невалидные поддомены?

    @2mitrij Автор вопроса
    Попытаюсь объяснить попонятнее, возможно я плохо описал:

    Есть домен, условно domain.name, на поддоменах этого домена размещаются лендинги, типа так: landing1.domain.name. Т.к. поддомены не фиксированные, а могут добавляться\удаляться, в nginx их все не прописать, следовательно прописан server_name с wildcard (в первом посте написал). В результате web приложение (django в нашем случае, но это не важно на самом деле) получает запросы на ВСЕ поддомены, даже те что на самом деле не существуют, и те, которые невалидны согласно RFC.
    С несуществующими доменами все ок, приложение содержит в БД список поддоменов и определяет что обработать, а что вернуть со статусом 404.
    А вот невалидные домены я считаю неправильным вообще пускать за frontend сервер (разработчики django видимо тоже так считают, раз выбрасывают исключение и 500 статус в ответ на такое), в связи с чем и попытался придумать решение.
    Каким образом default_server будет будет что-то не пускать я не понял, и он кстати настроен:

    server {                                                                                                                                                                                      
        listen 80 default_server;                                                                                                                                                                 
                                                                                                                                                                                                  
        server_name _;                                                                                                                                                                            
                                                                                                                                                                                                  
        return 301 https://$host$request_uri;                                                                                                                                                     
    }                                                                                                                                                                                             
                                                                                                                                                                                                  
                                                                                                                                                                                                  
    server {                                                                                                                                                                                      
        listen 443 ssl default_server backlog=8192;                                                                                                                                               
                                                                                                                                                                                                  
        server_name _;                                                                                                                                                                            
                                                                                                                                                                                                  
        include /etc/nginx/snippets/snakeoil.conf;                                                                                                                                                
                                                                                                                                                                                                  
        return 444;                                                                                                                                                                               
    }
  • Nginx, как запретить невалидные поддомены?

    @2mitrij Автор вопроса
    Нет, не проще. Фиксированных поддоменов нет. Каждый поддомен это отдельный лэндинг. Они могут удаляться и добавляться постоянно. Все действия осуществляются через админку, создание, удаление, редактирование лэндингов, естественно нужно чтобы все это работало без необходимости каждый раз лезть в конфиг nginx и делать reload.