Ubuntu

Apache2:為什麼我會收到 403 Forbidden 錯誤?

  • February 10, 2022

這幾天我一直在搞砸:(

為什麼我在 example.com/contact 上收到 403 Forbidden 錯誤?

這是文件/文件夾權限、Apache 使用者、虛擬主機還是 Python 問題?

我正在嘗試在 /contact 上執行 Django 應用程序,但第一個問題是 403 錯誤。

  • 我正在執行 Ubuntu 20.04.3 LTS
  • Apache 2.4.41 已安裝並正在執行
  • 安裝了 Python 3.8 和 Django
  • libapache2-mod-wsgi-py3 已安裝並啟用
  • apachectl configtest語法OK
  • 所有文件 chown 到www-data:www-data
  • 目錄 chmod +x
  • example.com/index.html 有效

/var/log/apache2/access.log是空的

/var/log/apache2/error.log包含:

$$ mpm_prefork:notice $$ $$ pid 69090 $$AH00163:Apache/2.4.41 (Ubuntu) OpenSSL/1.1.1k mod_wsgi/4.6.8 Python/3.8 已配置——恢復正常操作 $$ core:notice $$ $$ pid 69090 $$AH00094:命令行:’/usr/sbin/apache2'

根目錄下的 .htaccess 文件有

RewriteEngine on
ServerSignature Off
Options All -Indexes

這是我的 public_html 文件結構:

在此處輸入圖像描述

/etc/apache2/sites-available/default-ssl.conf:

 <IfModule mod_ssl.c>
   <VirtualHost _default_:443>
       ServerAdmin webmaster@localhost
   
       DocumentRoot /var/www/html
   
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
   
       SSLEngine on
   
       SSLCertificateFile  /etc/ssl/certs/ssl-cert-snakeoil.pem
       SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
   
       <FilesMatch "\.(cgi|shtml|phtml|php)$">
                   SSLOptions +StdEnvVars
       </FilesMatch>
       <Directory /usr/lib/cgi-bin>
                   SSLOptions +StdEnvVars
       </Directory>
   
   
   Alias /static /var/www/html/example.com/public_html/contact/static
   Alias /media /var/www/html/example.com/public_html/contact/media

   <Directory /var/www/html/example.com/public_html/contact/static>
       Require all granted
   </Directory>

   <Directory /var/www/html/example.com/public_html/contact/media>
       Require all granted
   </Directory>

   WSGIScriptAlias /contact/contact /var/www/html/example.com/public_html/contact/contact/wsgi.py

   WSGIDaemonProcess contact python-home=/var/www/html/example.com/public_html/contact/contact

   WSGIProcessGroup contact

   WSGISocketPrefix run/wsgi

   <Directory /var/www/html/example.com/public_html/contact/contact>
       <Files wsgi.py>
           Require all granted
           AllowOverride None
           Allow from all
       </Files>
   </Directory>

       </VirtualHost>
</IfModule>

當目錄中沒有 Indexdocument 時,Apache httpd 無法顯示任何內容。Apache 的典型替代方法是顯示目錄列表,已通過在選項中設置**-**索引來禁用。

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