質問: apache2(リバースプロキシ)+ django + gunicorn リバースプロキシサーバーとしてのapache2webサーバーに問題があります。私のドメイン「example.com」を使用した簡略化されたサーバー設定は次のようになります。 クライアントがhttps://example.com/guacamoleページに移動した場合、apache2 webサーバーは要求をtomcatサーバー(https://127.0.0.1:8080/guacamole)に転送する必要があります。この部分は機能します。クライアントがhttps://example.com/mydjangoprojectに移動する場合、apache2webサーバーはgunicornとdjangoプロジェクト(https://192.168.30.5:8000)を使用してwebサーバーに要求を転送する必要があります。ただし、この構成は機能します。ページhttps://example.com/mydjangoprojectはdjangoプロジェクトのメインページを示していますが、管理ページhttps://example.com/mydjangoproject/adminを呼び出すとdjangoアプリケーションは、ページhttp://192.168.30.5:8000//adminが存在しないというエラーを表示します。管理ページを呼び出すときにサブurl「/ mydjangoproject /」が削除されているようです。これは何でしょうか?これは私の構成です:<ifmodule mod_ssl.c> <virtualhost *:443> serveradmin admin@example.com servername example.com serveralias www.example.com documentroot /var/www/example.com/html errorlog ${apache_log_dir}/error.log customlog ${apache_log_dir}/access.log combined include /etc/letsencrypt/options-ssl-apache.conf sslcertificatefile /etc/letsencrypt/live/example.com/fullchain.pem sslcertificatekeyfile /etc/letsencrypt/live/example.com/privkey.pem jkmount /* ajp13_worker sslproxyengine on sslproxyverify none sslproxycheckpeercn off sslproxycheckpeername off proxypreservehost on proxypass /static/ ! proxypass /mydjangoproject https://192.168.30.5:8000/ proxypassreverse /mydjangoproject https://192.168.30.5:8000/ </virtualhost> </ifmodule> ご協力いただきありがとうございます!編集:https://example.com/mydjangoproject/adminを介して管理ページに入ろうとすると、このエラーが発生します:
回答: これを機能させるには、proxypassおよびproxypassreverseディレクティブを変更する必要がある可能性があります。これらの行を置き換えてみてください。proxypass /static/ ! proxypass /mydjangoproject https://192.168.30.5:8000/ proxypassreverse /mydjangoproject https://192.168.30.5:8000/ 例:# "convenience" url proxypass /mydjangoproject https://192.168.30.5:8000 proxypassreverse /mydjangoproject https://192.168.30.5:8000 # --- the lines below are what actually allow access to /admin --- # proxy /admin for login proxypass /admin http://192.168.30.5:8000/admin proxypassreverse /admin http://192.168.30.5:8000/admin # proxy /static for css, etc. proxypass /static http://192.168.30.5:8000/static proxypassreverse /static http://192.168.30.5:8000/static その後、たとえばを使用できるようになります。 https://example.com/admin django /adminページにアクセスして、正しいログインダイアログを表示するには:例django管理者ログイン https://example.com/mydjangoproject/adminを介して管理ページに入ろうとすると、エラーが発生します。 これを(一種の)動作させるには、(上記で推奨されている行に加えて)次の行を追加できるはずです。proxypass /mydjangoproject/admin http://192.168.30.5:8000 proxypassreverse /mydjangoproject/admin http://192.168.30.5:8000 djangoはex。https://example.com/mydjangoproject/adminをex。https://example.com/adminに自動的にリダイレクトするようです。これにより、ex。proxypass /admin http://192.168.30.5:8000/adminが既存のエントリとして既に存在しない限り問題が発生します。 (上記に含まれています)。