2017-04-16 298 views
0

我遇到一个问题,在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的)应用程序,但显然我错过了在本次测试的东西。

+1

Django配置相对于您添加的内容定义在哪里?如果Django应用程序是在路径“/”,那么你在这里补充必须在此之前,其他的“/”为Django应用程序匹配的将优先考虑。 –

+0

事实证明,这只是一个与一般的别名配置的问题:[WSGIScript]别名是为定义'虚拟主机*',而不是'虚拟主机*:433'(服务器使用SSL)。将它们添加到'VirtualHost *:433文件修复它。感谢您的建议,但要记住好! – Nathan

回答

0

这是通过更新所述<VirtualHost *:443>配置文件以包括WSGIScriptAlias线(作为服务器使用SSL)解决,而不是<VirtualHost *>配置下具有WSGIScriptAlias

我不知道,所有的别名需要被包含在443端口的功能,但最终与香草Alias和定位哪些文件,他们在玩定义后的工作了:

grep -R "Alias" /etc/apache2/*