web-dev-qa-db-ja.com

ローカルホストへのApacheリンクの背後にあるGunicorn

Mod_proxyを使用して、Apacheの背後でflaskアプリケーションを提供するgunicornがあります。

Gunicornはhttp://localhost:8080/にあります。サーバーがhttp://example.com/にあるとします

サーバーに無効なリンクを投稿すると(末尾を忘れるなど)、http://example.com/with-no-trailing-slashとすると、クライアントマシンにサーバーがないため、ユーザーはhttp://localhost:8080/with-no-trailing-slashにリダイレクトされます。

なぜそのように振る舞うのか知っていますか?そして、この動作を修正するにはどうすればよいですか?

Gunicornを開始するには、次のようにします: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>

別の設定ファイルが必要な場合は、お知らせください!

7
Alexis Benoist

ApacheがリダイレクトURLの書き換えに正確に役立つ逆マッピングがありません。 99%のケースで、フォワードマッピングとリバースマッピングは同じです。

これを追加 :

ProxyPassReverse / http://localhost:8080/

そして、Apacheをリロードします。

5
zerodeux