仅允许具有预定uname / passwd的用户访问Django网站

时间:2011-11-11 08:15:25

标签: django security port

我有一个使用mod_wsgi在Apache上运行的Django applciation,但我想在同一台机器上创建一个开发服务器。

我可以通过http://IP_ADD访问我的网站,我希望从http://IP_ADD:8080或其他端口访问开发服务器。

但正如您所注意到的,我想阻止未输入预定用户名/密码的用户访问8080端口。

我怎样才能获得这种保护?我可能只允许某些IP地址,但它不是解决方案。

另一个问题也是关于选择的港口。我选择8080端口,但我也会设置问题跟踪系统,SVN等。我不确定我应该为他们打开哪些端口。

谢谢

2 个答案:

答案 0 :(得分:1)

对于您要托管的每个站点,您可以创建一个单独的Apache站点,其中包含以下几行的VirtualHost文件:

<VirtualHost *:8080>
  ServerName www.example.com:8080    // Your name (if available)
  ServerAlias 12.23.34.45            // Your IP
  DocumentRoot /var/www/mydjangoapp  // Your folder

  <Directory />
    Order deny,allow
    Deny from all
    Allow from 127
    AuthName "Restricted area"
    AuthType Basic
    AuthUserFile /etc/apache2/users_mydjangoapp  // Allowed users file
    require valid-user
  </Directory>

可以使用Apache的authentication system生成用户文件本身。对于每个站点,您可以添加单独的用户文件以包含系统该部分的访问权限。对于基于IP的访问,只需在Allow from 123.123.123.123行下方添加Allow from 127行。

最后,可以通过创建更多这些Apache站点来创建其他站点(有关详细信息,请参阅示例here)。只需将端口(我的示例中为8080)修改为您要在其下托管其他网站的端口。

答案 1 :(得分:0)

您可以添加基本身份验证 http://djangosnippets.org/snippets/1304/