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>
別の設定ファイルが必要な場合は、お知らせください!
ApacheがリダイレクトURLの書き換えに正確に役立つ逆マッピングがありません。 99%のケースで、フォワードマッピングとリバースマッピングは同じです。
これを追加 :
ProxyPassReverse / http://localhost:8080/
そして、Apacheをリロードします。