Gunicorn por trás do link do apache para localhost

6

Eu tenho um gunicorn servindo uma aplicação de flask atrás do Apache usando o mod_proxy.

Gunicorn está em http://localhost:8080/ . Digamos que meu servidor esteja em http://example.com/

Às vezes, quando publico um link inválido para o meu servidor (como esquecer o trailing), digamos http://example.com/with-no-trailing-slash , o usuário é redirecionado para http://localhost:8080/with-no-trailing-slash , que não é válido porque não há servidor na máquina cliente.

Você sabe por que se comporta assim? E como consertar esse comportamento?

Para iniciar o gunicorn eu faço isso: 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>

Se você precisar de outro arquivo de configuração, avise-me!

    
por Alexis Benoist 09.09.2014 / 12:28

1 resposta

4

Você está perdendo o mapeamento reverso que é precisamente útil para o Apache para reescrever URLs de redirecionamento. Em 99% dos casos, os mapeamentos para frente e para trás são iguais.

Adicione isto:

ProxyPassReverse / http://localhost:8080/

E recarregue o Apache.

    
por 11.09.2014 / 17:45