Я использую Linux сервер для обслуживания приложения React в качестве внешнего интерфейса и Django в качестве внутреннего.
Конфигурация gunicorn
выглядит следующим образом:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=name
Group=www-data
WorkingDirectory=/var/www/backend/app
ExecStart=/var/www/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/name/backend.sock app.wsgi:application
[Install]
WantedBy=multi-user.target
И nginx
config выглядит следующим образом:
server {
listen 80;
root /var/www/frontend/build;
server_name example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location / {
}
location /graphql {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
proxy_pass http://unix:/home/name/backend.sock;
}
}
Приложение Django urls.py выглядит следующим образом:
urlpatterns = [
path('admin/', admin.site.urls),
path('reports/', include('reports.urls')),
path('graphql/', csrf_exempt(GraphQLView.as_view(graphiql=True)))
]
Если я получаю запрос на выборку www.example.com/graphql
, он работает нормально.
Но если я хочу получить доступ к Django панели администратора, как указано ниже www.example.com/admin/, она не работает.
Если я правильно понимаю, location /graphql {}
означает, что Django приложения запускаются на этом URL. Таким образом, если я хочу получить доступ к некоторым URL-адресам в файле urls.py, я использую www.example.com/graphql/url from urls.py
Разве это не должно быть www.example.com/graphql/graphql
Как получить доступ к панели администратора? Что я не понимаю хорошего?