Как сделать URL-адреса администратора Django доступными только для localhost?

Какой самый простой способ сделать Django /admin/ urls доступным только для localhost?

Варианты, о которых я думал:

  • Отделите сайт администратора от проекта (каким-либо образом) и запустите его как другой виртуальный хост (в Apache2)
  • Используйте прокси перед веб-сервером (Apache2)
  • Ограничить URL в Apache в WSGI как-то.

Есть ли стандартный подход?

Спасибо!

2 ответа

Решение

Идти для конфигурации Apache:

<Location /admin>
    Order Deny, Allow
    Deny from all
    Allow from 127.0.0.1
</Location>

НТН.

Я бы пошел на настройку Apache + запустить прокси впереди + ограничить в WSGI:

  1. Мне не нравится Apache для общения с веб-клиентами, когда речь идет о динамической генерации контента. Из-за своей модели выполнения медленный или отключенный клиент может связать процесс Apache. Если у вас впереди прокси-сервер (я предпочитаю nginx, но подойдет даже Apache Vanilla), прокси будет беспокоиться о клиентах, и Apache сможет сосредоточиться на новом запросе динамического содержимого.

  2. В зависимости от конфигурации Apache, процесс также может отнимать много памяти и удерживать ее до тех пор, пока не достигнет MaxRequests. Если у вас есть код, интенсивно использующий память, в /admin (как это делают многие), вы можете получить процессы Apache, которые занимают намного больше памяти, чем им нужно. Если вы разделите конфигурацию Apache на / admin и /! Admin, вы можете настроить параметры apache, чтобы иметь большее количество серверов /! Admin, которые требуют меньшего потенциального пространства.

  3. Я параноидальные настройки сервера.

    • Я хочу убедиться, что прокси отправляет / admin только на определенный порт Apache.
    • Я хочу убедиться, что Apache получает / admin только на определенный порт apache и что он пришел от прокси-сервера (с секретным заголовком) или от localhost.
    • Я хочу убедиться, что WSGI работает только с / admin, основываясь на определенных условиях сервера / клиента.
Другие вопросы по тегам