リバースプロキシサーバーとしての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 [email protected]
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
が既存のエントリとして既に存在しない限り問題が発生します。 (上記に含まれています)。