Я хочу настроить сервер с nginx + gunicorn + django + vue
в nginx, я настраиваю веб-сайт следующим образом
server {
charset utf-8;
listen 80;
root /home/www/develop/mysite/public;
index index.html;
location /static { # for file download functions of django
alias /home/www/develop/mysite/static;
}
location ^~/api/ {
proxy_pass http://localhost:8888/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http://localhost:8888/ http://$host:$server_port/api/;
}
}
, затем в vue front end я ставлю индекс.html и другие статические ресурсы в / home / www /velop / mysite / public
, и я использую axios для доступа к серверу с baseurl '/ api'
обычно nginx + gunicorn + django workхорошо, но если ответ django - перенаправление HTTP 302, возникнет проблема, потому что редирект не содержит baseurl '/ api', например
http://localhost/api/admin
будет иметь доступdjango-admin, обычно django перенаправляет его на
http://localhost/admin/login/?next=/admin/
обратите внимание, что baseurl '/ api' потерян, поэтому nginx не найдет ресурс, отвечающий за запрос, тогда ответ 404
Я добавил proxy_redirect в конфигурацию веб-сайта nginx, чтобы добавить baseurl '/ api', если ответ от proxy_pass - перенаправление HTTP, но, похоже, он не работает, может кто-нибудь помочь мне указать на проблему?
илиЯ должен отредактировать код django и код vue, это огромная работаКроме того, это не является чистым, в будущем, если кому-то еще понадобится разработать код, новый разработчик будет сбит с толку.
эта проблема должна быть решена в nginx
Я прочитал
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect
и я думаю, что мой конфиг proxy_redirect правильный