9 votes

Gunicorn derrière un lien apache vers localhost

J'ai un gunicorn qui sert une application flask derrière Apache en utilisant mod_proxy.

Gunicorn est sur http://localhost:8080/ . Disons que mon serveur est sur http://example.com/

Parfois, lorsque je poste un lien invalide sur mon serveur (comme l'oubli de la queue), disons que http://example.com/with-no-trailing-slash l'utilisateur est redirigé vers http://localhost:8080/with-no-trailing-slash qui n'est pas valide car il n'y a pas de serveur sur la machine cliente.

Savez-vous pourquoi il se comporte comme ça ? Et comment réparer ce comportement ?

Pour commencer la gunicorn, je fais ça : sudo gunicorn -b localhost:8080 app:app

<VirtualHost *:80>
ServerName example.com
ServerAlias example.com

DocumentRoot /opt/example

<Proxy *>
    AuthType basic
    AuthBasicAuthoritative Off
    SetEnv proxy-chain-auth On
    Order allow,deny
    Allow from all
</Proxy>

# Let apache serve static files
ProxyPass /robots.txt !
ProxyPass /favicon.ico !
ProxyPass /static/ !
Alias /static/ /opt/example/app/static/

# Gunicorn handle the others
ProxyPass / http://localhost:8080/

# robots.txt et favicon.ico sont dans /path/to/django/project/static/
Alias /robots.txt /path/to/django/project/static/robots.txt
Alias /favicon.ico /path/to/django/project/static/favicon.ico

Alias /favicon.ico /path/to/django/project/static/favicon.ico

<Directory /path/to/django/project>
    Order deny,allow
    Allow from all
    Options -Indexes
</Directory>
</VirtualHost>

Si vous avez besoin d'un autre fichier de configuration, faites-le moi savoir !

6voto

zerodeux Points 656

Il vous manque le mappage inverse qui est précisément utile à Apache pour la réécriture des URL de redirection. Dans 99% des cas, les mappings forward et reverse sont les mêmes.

Ajouter ce :

ProxyPassReverse / http://localhost:8080/

Et rechargez Apache.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X