2017-01-18 1 views
0

J'ai découvert mod_wsgi-express aujourd'hui et je pense que c'est un projet vraiment cool. Je n'arrive pas à croire que cette seule commande soit nécessaire pour déployer des applications Web Python/Django.Servir des fichiers statiques en utilisant mod_wsgi-express avec ProxyPass dans Apache ne fonctionne pas

mod_wsgi-express start-server project/wsgi.py 

Cependant, la documentation semble toujours manquante (ou je n'ai pas trouvé?). Pour autant que je vois, il n'est pas mentionné dans les documents officiels here.

J'héberge deux petits sites sur la même machine, en utilisant VirtualHost. Donc, j'ai besoin de proxy à un autre port comme celui-ci:

<VirtualHost *:80> 
    ProxyPreserveHost On 
    ServerName example.com 
    ProxyPass "/" "http://localhost:8000" 
</VirtualHost> 

Jusqu'ici tout va bien. Je courais mod_wsgi-express comme suit:

mod_wsgi-express start-server --url-alias /static /path/to/static project/wsgi.py 

Vous voyez, je suis en train de définir des fichiers statiques config en elle-même mod_wsgi-express. Cependant, les fichiers statiques ne sont pas servis et donne 502 Erreur de proxy. Par conséquent, les requêtes dynamiques par proxy fonctionnent, mais pas les fichiers statiques. Site fonctionne également fichier lorsque vous accédez directement au port 8000. Qu'est-ce que je manque ici? Bien sûr, je pourrais ajouter config dans VirtualHost lui-même pour servir ces fichiers statiques, mais si cela fonctionne avec mod_wsgi-express, cela rendrait la configuration beaucoup plus simple et plus facile à déployer.

+0

Pour configurer Apache en tant que proxy devant mod_wsgi-express, vous pouvez lire http://blog.dscpl.com.au/2015/06/proxying-to-python-web-application.html et http: //blog.dscpl.com.au/2015/07/redirection-problems-when-proxying-to.html Ignore le fait que mod_wsgi-express s'exécute dans Docker. Les mêmes concepts s'appliquent. –

+0

Merci beaucoup @GrahamDumpleton Deuxième poste est en effet très détaillé sur le problème ci-dessus. J'ai facilement pu résoudre le problème suite à votre message. Bravo :) – chhantyal

Répondre

0

Merci à Graham Dumpleton pour le commentaire ci-dessus. Bien qu'il ne soit pas là dans la documentation officielle, il a écrit un article sur ce sujet: Redirection problems when proxying to Apache running in Docker..

Bien que je n'utilise pas Docker, cette solution est générique lorsque je demande par proxy à un autre port que 80 ou 443 d'Apache VirtualHost.

Dans mon cas ci-dessus, il me manquait deux en-têtes dans la configuration VirtualHost. Il s'agit donc de la nouvelle configuration de VirtualHost:

<VirtualHost *:80> 
    ServerName example.com 
    ProxyPass/http://localhost:8000/ 
    ProxyPassReverse/http://localhost:8000/ 
    RequestHeader set X-Forwarded-Port 80 
</VirtualHost> 

C'est tout ce dont vous avez besoin. Graham fournit beaucoup de détails dans son blog, il vaut donc la peine de lire si vous faites face à des problèmes similaires.