2016-07-06 4 views
1

У меня есть промежуточный сервер с одинаковым исходным кодом на производственном сервере. Я хочу держать публику вне промежуточного сервера, поэтому я подумал о том, чтобы использовать htaccess, чтобы ограничить пользователей промежуточным сервером (и держать роботов и незнакомых людей снаружи).Django: используйте htaccess для защиты приложения django

Как-то его не работает для меня.

Я создал PasswordFile

sudo htpasswd -cs /var/.passwd staging 

Я поместил файл .htaccess в

/var/www/djangoapp/ 

.htaccess:

AuthUserFile /var/.passwd 
AuthType Basic 
AuthName "Just testing" 
Require valid-user 

Я обеспечил:

<Directory /var/www/> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
</Directory> 

Apache рестарт:

sudo service apache2 restart 

Django приложения по-прежнему доступны для всех. Что я делаю не так?

+1

Ваш файл паролей должен быть назван .htpasswd – Lag

+0

Это выглядит странно для меня. Почему в любом случае файлы приложения django будут открыты для свободного мира? Поместите их за корень Apache и правильно настройте vhost. – Wtower

+0

Я переименовал его в .htpasswd. Проблема остается – caliph

ответ

1

Я нашел альтернативное решение для вышеупомянутого цели без htaccess. Я хотел бы поделиться:

в 000-умолчанию-конф в соответствующем разделе VirtualHost:

<Directory /var/www/djangoapp/djangoapp> 
     AuthUserFile /var/.htpasswd 
     AuthName "Just testing" 
     AuthType Basic 
     Require valid-user 

     <Files wsgi.py> 
      Require valid-user 
     </Files> 
     WSGIApplicationGroup %{GLOBAL} 
</Directory> 

Конечно, это решение работает только если у вас есть доступ к этому файлу конфигурации на сервере. Во всяком случае, он решил мою проблему. Я не мог понять, почему оригинальная настройка в моем вопросе не работает для меня.