403 错误禁止您无权访问此服务器 mod_wsgi 和 apache 上的 /myapp

Posted

技术标签:

【中文标题】403 错误禁止您无权访问此服务器 mod_wsgi 和 apache 上的 /myapp【英文标题】:403 error forbidden you don't have permission to access /myapp on this server mod_wsgi and apache 【发布时间】:2018-07-12 19:28:23 【问题描述】:

我已将 mod_wsgi 作为 Apache 模块安装,我想运行一个简单的 hello world 应用程序以查看该模块是否正常工作。 我遵循了this 指南,该指南基于官方Quick Configuration Guide。 完成所有步骤后,我收到 403 错误Forbidden You don't have permission to access /myapp on this server.. 我在 Raspbian 上使用 Apache/2.4.10,我安装的 mod_wsgi 版本是libapache2-mod-wsgi-py3 4.3.0-1 armhf Python 3 WSGI adapter module for Apache.

我已将 example.com 添加到我的主机文件中,如下所示:

127.0.0.1 localhost example.com

我在/etc/apache2/sites-enabled/ 中创建了example.com.conf 文件,内容如下:

<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
ServerAdmin test@test.com

DocumentRoot /usr/local/www/documents
<Directory /usr/local/www/documents>
Order allow,deny
Allow from all
</Directory>

WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/myapp.wsgi
<Directory /usr/local/www/wsgi-scripts>
Order allow,deny
Allow from all
</Directory>

myapp.wsgi 内容:

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!\n'
response_headers = [('Content-type', 'text/plain'),
                    ('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]

并使用以下权限为 hello world 应用程序创建文件/文件夹:

drwxr-sr-x 2 root www-data 4096 Feb  1 13:18 documents
drwxr-sr-x 2 root www-data 4096 Feb  1 13:22 wsgi-scripts

我还确保 example.com 在本地提供服务,而不是通过带有 ping 的 DNS。

我不明白为什么我的安装不起作用。

是否缺少任何其他配置选项或我的任何设置有问题?

【问题讨论】:

【参考方案1】:

经过几次修改,我想通了。 新的example.com.conf 文件是:

<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com

DocumentRoot /usr/local/www/documents
<Directory /usr/local/www/documents>
Require all granted
Satisfy Any
</Directory>

WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/myapp.wsgi
<Directory /usr/local/www/wsgi-scripts>
<Files myapp.wsgi>
Require all granted
Satisfy Any
</Files>
</Directory>

在语法更改为匹配 apache 2.4 后,我得到 500 Internal Server Error,在 apache error.log 文件中进一步调查后显示以下错误:

[wsgi:error] [pid 11216] [client 127.0.0.1:56642] mod_wsgi (pid=11216): Exception occurred processing WSGI script '/usr/local/www/wsgi-scripts/myapp.wsgi'.
[wsgi:error] [pid 11216] [client 127.0.0.1:56642] TypeError: sequence of byte string values expected, value of type str found

为了解决这个错误,我将 myapp.wsgi 文件中的 output 变量赋值从 output = 'Hello World!\n'output = b'Hello World!',如here所示。

【讨论】:

以上是关于403 错误禁止您无权访问此服务器 mod_wsgi 和 apache 上的 /myapp的主要内容,如果未能解决你的问题,请参考以下文章

403 - 禁止访问: 访问被拒绝。您无权使用所提供的凭据查看此目录或页面。 怎么解决 ?

Wordpress 403 禁止“您无权访问此服务器上的 /。”

Heroku 上的 Symfony:403 Forbidden 您无权访问此服务器上的 /

MacOS XAMPP 访问禁止错误 403 - 您无权访问请求的目录

本地主机上的 php 错误:访问被禁止!错误 403

Laravel 403 禁止错误