Apache-2.2

為什麼我在嘗試訪問視圖源時收到 403:https://ccachicago.pragmatometer.com/admin/static/css/base.css?

  • January 28, 2014

我一直在嘗試不擇手段地在 Apache SSL VirtualHost 中提供 /admin/static/ 服務,最好是由 Apache(它將 SSL 流量轉發到 Django Gunicorn 實例),或者禁止 Apache,至少 Gunicorn 提供服務靜態內容,而我正在研究更好的解決方案。

我得到一個 Apache 服務的 403,我檢查過的所有權限都表明 /usr/lib/python2.7/dist-packages/django/contrib/admin/static/ 目錄(以及需要的父目錄)是執行伺服器的使用者可讀和可執行。

你能在下面的 VirtualHost 中看到任何錯誤,這可以解釋為什麼 Apache 沒有將有問題的目錄作為別名目錄提供服務嗎?

<VirtualHost *:443>
   ServerName ccachicago.pragmatometer.com

   Alias /media/ "/home/jonathan/ccachicago/media/"
   <Directory "/home/jonathan/ccachicago/media/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       Order deny,allow
       Deny from all
       Allow from 127.0.0.0/255.0.0.0 ::1/128
   </Directory>

   Alias /admin/static/ "/usr/lib/python2.7/dist-packages/django/contrib/admin/static/"
   <Directory "/usr/lib/python2.7/dist-packages/django/contrib/admin/static/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       Order deny,allow
       Deny from all
       Allow from 127.0.0.0/255.0.0.0 ::1/128
   </Directory>

   ProxyPass /media/ !
   ProxyPass /admin/static/ !
   ProxyPass / http://localhost:8080/
   ProxyPassReverse / http://localhost:8080/

    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/ssl.crt
    SSLCertificateKeyFile /etc/apache2/ssl/ssl.key
   ServerAdmin CJSHayward@PObox.com
</VirtualHost>
  • 更新 -

如果我註釋掉拒絕/允許行,我會得到相同的 403 錯誤頁面。日誌文件有:

[Mon Jan 27 21:52:34.297099 2014] [authz_core:error] [pid 4818] [client 205.197.161.146:44895] AH01630: client denied by server configuration: /usr/lib/python2.7/dist-packages/django/contrib/admin/static/css

所以我的配置中的某些東西顯然不起作用;我現在有:

<VirtualHost *:443>
   ServerName ccachicago.pragmatometer.com

   Alias /media/ "/home/jonathan/ccachicago/media/"
   ErrorLog /var/log/apache2/error.log
   <Directory "/home/jonathan/ccachicago/media/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       Order deny,allow
       Deny from all
       Allow from 127.0.0.0/255.0.0.0 ::1/128
   </Directory>

   Alias /admin/static/ "/usr/lib/python2.7/dist-packages/django/contrib/admin/static/"
   <Directory "/usr/lib/python2.7/dist-packages/django/contrib/admin/static/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       #Order deny,allow
       #Deny from all
       #Allow from 127.0.0.0/255.0.0.0 ::1/128
       #Allow from 0.0.0.0 ::1/128
       #Allow from all
   </Directory>

   ProxyPass /media/ !
   ProxyPass /admin/static/ !
   ProxyPass / http://localhost:8080/
   ProxyPassReverse / http://localhost:8080/

    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/ssl.crt
    SSLCertificateKeyFile /etc/apache2/ssl/ssl.key
   ServerAdmin CJSHayward@PObox.com
</VirtualHost>

您只允許從 127.0.0.0 和 ::1 訪問。您確定您正在通過這些地址訪問該網站嗎?我會首先禁用訪問限制,然後看看會發生什麼。


您的日誌片段顯示您沒有從 127.0.0.1 或 ::1 訪問伺服器,因此您設置的訪問限制在生效時將拒絕訪問。

引用自:https://serverfault.com/questions/570248