2011-12-07 162 views

回答

2

是的,這是可能的。

使用/上的mod_wsgi,需要將由apache提供的任何資源列爲別名。

驗證指令和主機限制住在Location指令中。

所以我禁用了像css之類的任何apache訪問限制,並提供了基於主機/ ip的訪問另一個目錄。

<VirtualHost *:80> 
     Servername    app.domain.example 
     CustomLog    logs/access_log combined 
     ErrorLog    logs/error_log 
     DocumentRoot   "/home/app/apache/app/html" 

     Alias /media/   /home/app/apache/app/html/media/ 

     <Location /> 
       Options None 
       AuthType    Basic 
       AuthName    "Login Prompt" 
       AuthUserFile   /path/to/passwd.file 
       Require     valid-user 
     </Location> 

     <Location /media> 
       Order allow,deny 
       Allow from all 
       Satisfy any 
     </Location> 

     WSGIDaemonProcess  app user=app group=app processes=5 threads=1 display-name=app_WSGI 
     WSGIProcessGroup  app 
     WSGIScriptAlias  /  /home/app/apache/app.wsgi 
</VirtualHost> 
+0

謝謝你,爲我工作。我可以自由地從你的答案中編輯不必要的細節,只留下一些東西的要點。 –

+0

也許有更多的細節,然後有必要。很高興我現在沒有爲靜態文件添加'Expires'處理!總是樂意離開工作Apache配置的地方,人們可以找到他們。 – MattH

+0

嗨,謝謝你的回答。但是因爲我對這個東西很新鮮。你介意解釋如何創建passwd文件嗎? –

2

當然,我這裏是從一個網站:

<VirtualHost *:80> 
    ServerName djangoproject.domain.biz 

    DocumentRoot "/home/user/websites/djangoproject/website/" 

    WSGIDaemonProcess djangoproject python-path=/home/user/.virtualenvs/djangoproject/lib/python2 
.6/site-packages/ user=user group=user threads=1 
    WSGIProcessGroup djangoproject 
    WSGIScriptAlias//home/user/websites/djangoproject/website/django.wsgi 

    <Directory "/home/user/websites/djangoproject/website/"> 
    Order deny,allow 
    Allow from all 

    AuthType Basic 
    AuthName "By Invitation Only" 
    AuthUserFile /etc/apache2/passwords 
    Require valid-user 
    </Directory> 

</VirtualHost> 
+2

請注意,將DocumentRoot設置爲源代碼的位置,包括使用數據庫密碼的settings.py是一個不好的主意。如果您要將WSGIScriptAlias註釋掉,則可以下載所有源代碼。將django.wsgi粘貼到子目錄中,並且只爲該特定子目錄設置「全部允許」,這也是很好的做法。您已經爲整個源設置了訪問權限,這就是爲什麼DocumentRoot在您的情況下非常危險。 –

+0

非常好的一點,我會留下未經編輯的回答作進一步參考。 – bmihelac

相關問題