Gunicorn hinter Apache Link zu localhost

7

Ich habe ein Gunicorn, das mit mod_proxy eine Kolbenanwendung hinter Apache bedient.

Gunicorn ist an http://localhost:8080/. Angenommen, mein Server ist eingeschaltethttp://example.com/

Wenn ich einen ungültigen Link auf meinen Server poste (z. B. das Nachstellen vergessen), http://example.com/with-no-trailing-slashwird der Benutzer beispielsweise umgeleitet, http://localhost:8080/with-no-trailing-slashwas nicht gültig ist, da sich auf dem Clientcomputer kein Server befindet.

Weißt du warum es sich so verhält? Und wie kann man dieses Verhalten beheben?

Um Gunicorn zu starten, mache ich Folgendes: 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>

Wenn Sie eine andere Konfigurationsdatei benötigen, lassen Sie es mich wissen!

Alexis Benoist
quelle
Normalerweise würde ich erwarten, dass dies das Ergebnis eines abschließenden Schrägstrichs in Ihrer ProxyPass-Direktive ist, anstatt dies wegzulassen. zB ProxyPass /app/ http://localhost:8080/app/gegenProxyPasss /app http://..../app
HBruijn
Ja, veröffentlichen Sie die relevanten Abschnitte der Konfigurationsdateien.
MadHatter

Antworten:

5

Ihnen fehlt die umgekehrte Zuordnung, die für Apache beim Umschreiben von Umleitungs-URLs genau nützlich ist. In 99% der Fälle sind die Vorwärts- und Rückwärtszuordnungen gleich.

Füge das hinzu :

ProxyPassReverse / http://localhost:8080/

Und lade Apache neu.

zerodeux
quelle