Проблемы с обслуживанием приложения Django через подпуть в Apache
У меня есть приложение Django (Django version 4.2.11)
, которое я хочу обслуживать по подпути с помощью Apache. В частности, я хочу обслуживать приложение по адресу https://example.com/subpath
, чтобы другие URL-адреса приложений Django были доступны как подпути. Например:
https://example.com/subpath/admin
должен загрузить страницу администратора Django.https://example.com/subpath/api
должен загрузить конечные точки API.
Однако я сталкиваюсь с ошибкой 404, когда пытаюсь получить доступ к этим URL-адресам.
Вот моя текущая конфигурация Apache для перенаправления приложения Django на подпуть:
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
SSLEngine on
RewriteEngine on
# Redirect /subpath to INTERNAL_IP:8000
RewriteCond %{REQUEST_URI} ^/subpath
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://INTERNAL_IP:8000/$1 [P,L]
RewriteCond %{REQUEST_URI} ^/subpath
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /(.*) http://INTERNAL_IP:8000/$1 [P,L]
ProxyPass /subpath http://INTERNAL_IP:8000/
ProxyPassReverse /subpath http://INTERNAL_IP:8000/
ProxyRequests Off
</VirtualHost>
Мой файл Django urls.py
:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from apscheduler.schedulers.background import BackgroundScheduler
from my_app.management.commands import run_schedules
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('my_app.urls')),
path('api/', include('auth_app.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
admin.site.site_header = 'My API Administration'
admin.site.index_title = 'My API Admin Area'
admin.site.site_title = 'My API Administration'
scheduler = BackgroundScheduler()
scheduler.add_job(run_schedules.Command().handle, 'interval', minutes=0.50)
scheduler.start()
Выпуск
Несмотря на эти настройки, я по-прежнему сталкиваюсь с ошибкой 404 при попытке получить доступ к https://example.com/subpath/admin
. URL http://INTERNAL_IP:8000/admin
работает нормально.
Шаги, которые я предпринял до сих пор, но все еще не решил проблему
- Обновите конфигурацию Apache для работы с подпунктом и перезапустите Apache.
- Обновите Django
urls.py
, чтобы включить префикс /subpath. - Установите
FORCE_SCRIPT_NAME
вsettings.py
.
Любая помощь или руководство были бы очень признательны.