4

特定の django ビューへのアクセスを、VPN IP (10.8.0.3) から呼び出しているクライアントのみに指定しようとしています。

私のdjangoサーバーは、次の.confを使用してApacheでサポートされています

<VirtualHost *>
    ServerAdmin webmaster@demo.cl
    DocumentRoot /home/project/virtualenvs/env1
    ServerName client1.project.cl
    ServerAlias www.client1.project.cl
    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined

<Location "/">
SetHandler python-program
PythonHandler virtualhandler
SetEnv DJANGO_SETTINGS_MODULE project.settings
PythonOption django.root
SetEnv SITE_CLIENT_ID client1
PythonDebug On
PythonPath "['/home/project/virtualenvs/env1/django-site','/home/project/virtualenvs/env1/bin'] + sys.path"
</Location>

Alias /media "/home/project/virtualenvs/env1/lib/python2.6/site-packages/django/contrib/admin/media/"

<Location /media>
    SetHandler None
</Location>

<Location /nodesaccess >
        order Deny,Allow
        Deny from all
        Allow from 10.8.0.3
        SetHandler python-program
        PythonHandler virtualhandler
        SetEnv DJANGO_SETTINGS_MODULE project.settings
        PythonOption django.root
        SetEnv SITE_CLIENT_ID client1
        PythonDebug On
        PythonPath "['/home/project/virtualenvs/env1/django-    site','/home/project/virtualenvs/env1/bin'] + sys.path"

</Location>


</VirtualHost>

この以前の構成では、URL に応じて多くの django アプリケーションを作成できます。env 変数を回復し、apache が特定の設定をロードします。これは排他的で、サブドメインに依存します。とても興味深い

「Allow from 10.8.0.3」を使用してアクセスを拒否できないことを除いて、すべて正常に動作します(私のアプリケーション)。

何か案は?

ありがとうございました

4

2 に答える 2

0

HttpRequest.META(http://docs.djangoproject.com/en/dev/ref/request-response/)のREMOTE_ADDRを使用して、ビューでリクエスターIPを確認できます。そして、それがあなたが望むものと異なる場合は、404または403ページを返すだけです。

于 2010-07-28T10:32:52.603 に答える