Настройка Nginx с NextJs и фреймворком для отдыха Django
передняя часть моего сайта написана на .next, а задняя часть сайта написана на DRF (Django rest framework)
Как я могу настроить Nginx для запуска .next для front и Django для Back? мой текущий Nginx conf таков:
server {
listen 80;
listen [::]:80;
server_name portal.asem.com www.portal.asem.com;
include snippets/letsencrypt.conf;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name www.portal.asema.com;
ssl_certificate /etc/letsencrypt/live/portal.asem.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/portal.asem.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/portal.asem.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
return 301 https://portal.asem.com$request_uri;
}
server {
listen 443 ssl http2;
server_name portal.asem.com;
ssl_certificate /etc/letsencrypt/live/portal.asem.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/portal.asem.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/portal.asem.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
location /STATIC/ {
root /home/.../asem/static;
}
location /MEDIA/ {
root /home/.../asem;
}
location / {
proxy_pass http://localhost:3000;
try_files $uri /index.html =404;
}
location /admin {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
location /user {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
Моя служба systemd для nextJs:
[Unit]
Description=Asem Front
After=syslog.target network.target
[Service]
Environment=NODE_PORT=3000
Type=simple
User=...
Group=www-data
Restart=on-failure
WorkingDirectory=/home/.../asem-frontend
ExecStart=npm start
[Install]
WantedBy = multi-user.target
мой next.config.js имеет следующий вид:
const withPWA = require('next-pwa');
const settings = {
env: {
API_URL : 'http://portal.asem.com/'
},
devIndicators: {
autoPrerender: false,
},
pwa: {
dest: 'public',
},
};
module.exports = process.env.NODE_ENV === 'development' ? settings : withPWA(settings);
gunicorn of Django Backend is:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=...
Group=www-data
WorkingDirectory=/home/.../asem
ExecStart=/home/.../asem/.env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
asem.wsgi:application
[Install]
WantedBy=multi-user.target
я думаю, что когда front моего сайта, например, нужен : portal.asem.com/user вместо того, чтобы идти к "location/user" в Nginx conf идет к "localtion /" и запрашивает с front вместо back!? как я могу решить эту проблему?