我遇到了在Apache中设置WSGIScriptAlias的问题,尝试使用别名因为尝试访问"字面值而导致404错误。 URL。这是我的Apache2 sites-available/000-default.conf
中的测试设置(模仿mod_wsgi Quick Start Guide):
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
文件显示服务器尝试访问wsgi_test
中的URL路径DocumentRoot
,而不是别名文件路径:
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)应用程序,该应用程序当前在同一个VirtualHost中工作,但显然我在这个测试中缺少了一些东西。
答案 0 :(得分:0)
通过更新<VirtualHost *:443>
配置文件以包含WSGIScriptAlias
行(因为服务器使用SSL)而不是WSGIScriptAlias
配置下的<VirtualHost *>
来解决此问题。
我不知道所有别名都需要包含在443端口才能运行,但最终还是在玩了一个vanilla Alias
后找出了它们并定位了它们所定义的文件:< / p>
grep -R "Alias" /etc/apache2/*