403 forbidden :您无权访问此资源。 Apache/2.4.29 (Ubuntu) 服务器端口 443

403 forbidden : You don't have permission to access this resource. Apache/2.4.29 (Ubuntu) Server Port 443

我正在尝试 运行 我在 https 上的实例,它抛出了这个错误。

如果我删除 SSL,它在 http 上工作正常。

这是我在 error.log:

上收到的消息
AH01630: client denied by server configuration: /home/ubuntu/readingroots/
 AH01630: client denied by server configuration: /home/ubuntu/readingroots/favicon.ico, referer: https://readingroots.in/

这是我的 000-default.conf 文件配置:

<VirtualHost *:80>
        ServerAdmin admin@djangoproject.localhost
        ServerName readingroots.in
        ServerAlias www.readingroots.in
        DocumentRoot /home/ubuntu/readingroots
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        Alias /static /home/ubuntu/readingroots/static
<Directory /home/ubuntu/readingroots/static>
        Require all granted
</Directory>
<Directory /home/ubuntu/readingroots/readbus_project>
        <Files wsgi.py>
        Require all granted
        </Files>
</Directory>
        WSGIDaemonProcess readingroots python-path=/home/ubuntu/readingroots python-home=/home/ubuntu/readingroots/myprojectenv
        WSGIProcessGroup readingroots
        WSGIScriptAlias / /home/ubuntu/readingroots/readbus_project/wsgi.py

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.readingroots.in [OR]
RewriteCond %{SERVER_NAME} =readingroots.in
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

这是我的 000-default-le-ssl.conf 配置文件:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin admin@djangoproject.localhost
        ServerName readingroots.in
        ServerAlias www.readingroots.in
        DocumentRoot /home/ubuntu/readingroots
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        Alias /static /home/ubuntu/readingroots/static
<Directory /home/ubuntu/readingroots/static>
        Require all granted
</Directory>
<Directory /home/ubuntu/readingroots/readbus_project>
        <Files wsgi.py>
        Require all granted
        </Files>
</Directory>


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/readingroots.in/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/readingroots.in/privkey.pem
</VirtualHost>
</IfModule>

我尝试了各种方法,但似乎没有任何效果。 如果我可以尝试任何事情,请帮助并告诉我。

编辑:

这是 运行ning ls -l /home/ubuntu/readingroots 命令后的输出:

total 2164
drwxrwxr-x 5 ubuntu ubuntu      4096 Jul 26 18:23 actions
drwxrwxr-x 5 ubuntu ubuntu      4096 Jul 26 18:23 books
-rwxrwxr-x 1 ubuntu ubuntu     16384 Aug 14 05:32 celerybeat-schedule
drwxrwxr-x 5 ubuntu ubuntu      4096 Jul 26 18:23 chats
-rw-rw-r-- 1 ubuntu www-data 2120704 Aug 17 23:07 db.sqlite3
-rwxrwxr-x 1 ubuntu ubuntu     18446 Jul 15 19:21 edits.txt
-rwxrwxr-x 1 ubuntu ubuntu       656 Apr 26  2020 manage.py
drwxrwxr-x 3 ubuntu ubuntu      4096 Jul 24 03:20 media
drwxrwxr-x 5 ubuntu ubuntu      4096 Jul 24 06:05 myprojectenv
drwxrwxr-x 5 ubuntu ubuntu      4096 Jul 26 18:24 pages
drwxrwxr-x 4 ubuntu www-data    4096 Jul 26 05:22 readbus_project
drwxrwxr-x 8 ubuntu ubuntu      4096 Jul 26 18:40 static
drwxrwxr-x 7 ubuntu ubuntu      4096 Jul 26 18:38 static2
drwxrwxr-x 2 ubuntu ubuntu      4096 Jul 24 03:23 supervisor
drwxrwxr-x 4 ubuntu ubuntu      4096 Jul 24 03:23 templates
drwxrwxr-x 5 ubuntu ubuntu      4096 Jul 26 18:24 users
-rwxrwxr-x 1 root   root           0 Aug  5 05:43 vi

您已在目录上设置 Require all granted 选项

/home/ubuntu/readingroots/readbus_project

/home/ubuntu/readingroots/static

而您还需要 /home/ubuntu/readingroots 目录本身的指令。更多 here.

似乎您正在使用 python wsgi 并且您没有在项目的根节点上给它服务器权限

error from comments

[autoindex:error] [pid 27528:tid 140136830449408] [client 103.119.165.25:64522] AH01276: Cannot serve directory /home/ubuntu/readingroots/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

对于你的情况: 注释中的这个错误意味着您的服务器在端口 433

上看不到 wsgi

在您的配置中没有 WSGIScriptAliasWSGIDaemonProcess 或任何 433 conf..

它应该在 433 服务器配置和 80

中正确配置

对于可能解决此问题的其他人也可以提供帮助:

DocumentRoot /home/ubuntu/readingroots 本身没有 <Directory> 标记,因此您需要确保它存在

像这样的东西:

<Directory /home/ubuntu/readingroots>
        Require all granted
</Directory>

如果 wsgi 服务器本身试图获取属于其他用户而不是 运行 工作人员的文件,则可能会出现此问题,因此您需要解决任何权限问题

  • 转到 ubuntu 上的 apache2 配置目录 /etc/apache2 - 你会找到一个名为 magicvars

    的文件
  • apache-run-userapache-run-group 更改为您在 wsgi 服务中使用的内容

  • 授予该用户和组对根目录的所有权限

    chown -R user:group *
    
  • 如果您使用其他用户而不是您的编辑用户,请向组成员添加写入权限

    chmod g+x *
    // or
    chmod 774 *
    
  • 如果您不在该组中,请将您的用户添加到该组

    sudo usermod -a -G group user
    

I would recomend "NGNIX" as a proxy for wsgi python applications as I tried both and belive that apache2 is not a good friend of python