2017-04-16 1 views
0

Je rencontre un problème avec la définition d'un WSGIScriptAlias ​​dans Apache, où tenter d'utiliser l'alias donne une erreur 404 en raison d'essayer d'atteindre l'URL "littérale". Voici la mise en place de test dans mon Apache2 sites-available/000-default.conf (mimant le mod_wsgi Quick Start Guide):Pourquoi WSGIScriptAlias ​​n'a-t-il aucun effet?

DocumentRoot /var/www/html 
WSGIScriptAlias /wsgi_test /var/www/html/test.wsgi 
<Directory /var/www/html> 
     Order allow,deny 
     Allow from all 
</Directory> 

Après avoir redémarré Apache2 et va mydomain.com/wsgi_test, une page 404 est affichée. La première ligne du fichier error.log d'Apache ci-dessous indique le serveur tente d'accéder au chemin d'URL wsgi_test dans DocumentRoot, non le chemin du fichier crénelage:

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. 

Le fichier /var/www/html/test.wsgi a le même code que mentionné ci-dessus Guide de démarrage rapide:

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] 

avec des autorisations modifiee:

-rwxrw-r-- 1 username www-data 278 Apr 16 11:31 test.wsgi 

quelqu'un at-il suggéré s sur où chercher d'autres configurations qui peuvent affecter cela, ou d'autres conseils de débogage? Ce qui est bizarre, c'est que j'ai configuré une autre application (Django) avec mod_wsgi qui fonctionne actuellement dans le même VirtualHost, mais il me manque évidemment quelque chose dans ce test.

+1

Où est la configuration de Django définie par rapport à ce que vous avez ajouté? Si l'application Django est au chemin de '/', alors ce que vous ajoutez ici doit être avant cela, sinon la correspondance de '/' pour l'application Django aura la priorité. –

+0

Il s'est avéré que c'était juste un problème avec la configuration générale d'Alias: les alias [WSGIScript] ont été définis pour 'VirtualHost *', mais pas pour 'VirtualHost *: 433' (le serveur utilise SSL). Les ajouter au fichier 'VirtualHost *: 433 l'a corrigé. Merci pour la suggestion cependant, bonne chose à garder à l'esprit! – Nathan

Répondre

0

Cela a été résolu en mettant à jour le fichier de configuration <VirtualHost *:443> pour inclure la ligne WSGIScriptAlias (comme le serveur utilise le protocole SSL), au lieu d'avoir WSGIScriptAlias sous la configuration <VirtualHost *>.

Je ne savais pas que tous les alias nécessaires pour être inclus dans le port 443 pour fonctionner, mais finalement travaillé dehors après avoir joué avec la vanille et Alias localisation fichiers qu'ils ont été définis avec:

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