我遇到一个问题,在Apache的设置WSGIScriptAlias,在尝试使用别名在试图达到“字面” URL给一个404错误。下面是测试设置在我的Apache2 sites-available/000-default.conf
(模仿mod_wsgi Quick Start Guide):为什么WSGIScriptAlias没有效果?
DocumentRoot /var/www/html
WSGIScriptAlias /wsgi_test /var/www/html/test.wsgi
<Directory /var/www/html>
Order allow,deny
Allow from all
</Directory>
重新启动的Apache2和去mydomain.com/wsgi_test
后,会显示一个404错误页面。下面Apache的error.log
文件的第一行显示服务器试图访问DocumentRoot
URL路径wsgi_test
,而不是别名文件路径:
AH00128: File does not exist: /var/www/html/wsgi_test
AH01964: Connection to child 1 established (server nathanclonts.com:443)
(70007)The timeout specified has expired: [client 67.161.148.188:33883] AH01991: SSL input filter read failed.
文件/var/www/html/test.wsgi
具有相同的代码作为上述快速入门指南:
def application(environ, start_response):
status = '200 OK'
output = b'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
由于权限设置为:
-rwxrw-r-- 1 username www-data 278 Apr 16 11:31 test.wsgi
没有人有意见在哪里寻找其他可能影响此配置的配置,或其他任何调试技巧?
有什么奇怪的是,我已经设置了当前在同一个虚拟主机工作mod_wsgi的另一个(Django的)应用程序,但显然我错过了在本次测试的东西。
Django配置相对于您添加的内容定义在哪里?如果Django应用程序是在路径“/”,那么你在这里补充必须在此之前,其他的“/”为Django应用程序匹配的将优先考虑。 –
事实证明,这只是一个与一般的别名配置的问题:[WSGIScript]别名是为定义'虚拟主机*',而不是'虚拟主机*:433'(服务器使用SSL)。将它们添加到'VirtualHost *:433文件修复它。感谢您的建议,但要记住好! – Nathan