Как сделать 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:
Мне не нравится Apache для общения с веб-клиентами, когда речь идет о динамической генерации контента. Из-за своей модели выполнения медленный или отключенный клиент может связать процесс Apache. Если у вас впереди прокси-сервер (я предпочитаю nginx, но подойдет даже Apache Vanilla), прокси будет беспокоиться о клиентах, и Apache сможет сосредоточиться на новом запросе динамического содержимого.
В зависимости от конфигурации Apache, процесс также может отнимать много памяти и удерживать ее до тех пор, пока не достигнет MaxRequests. Если у вас есть код, интенсивно использующий память, в /admin (как это делают многие), вы можете получить процессы Apache, которые занимают намного больше памяти, чем им нужно. Если вы разделите конфигурацию Apache на / admin и /! Admin, вы можете настроить параметры apache, чтобы иметь большее количество серверов /! Admin, которые требуют меньшего потенциального пространства.
Я параноидальные настройки сервера.
- Я хочу убедиться, что прокси отправляет / admin только на определенный порт Apache.
- Я хочу убедиться, что Apache получает / admin только на определенный порт apache и что он пришел от прокси-сервера (с секретным заголовком) или от localhost.
- Я хочу убедиться, что WSGI работает только с / admin, основываясь на определенных условиях сервера / клиента.