Я знаю, что задавались похожие вопросы, но я не могу найти ответа для наиболее распространенного node / response / nginx config.
Приложение Backend node Я хочу изменить прокси на клиент on: port построен с помощью приложения create-response-app и построен. Я хочу, чтобы работали « глубокие ссылки » с маршрутизатором реакции. Я хочу обслуживать файлы stati c с nginx не узлом
После компилируя клиента, я перемещаю его в server/build
, а затем развертываю всю папку server
.
Итак, вопрос 1: является ли это лучшей окончательной структурой для развертывания? Причина, по которой мне это нравится, заключается в том, что созданные файлы находятся в каталоге build
, а не в public
с другими файлами на стороне сервера, такими как изображения, поэтому их можно легко заменить при следующей сборке.
Итак, сервер выглядит примерно так:
/mnt/ext250/web-apps/cbg.rik.ai/
├── build
│ └── index.html
│ └── static
│ ├── css
│ ├── js
│ └── media
// files that were in server/public
├── public
│ └── images
│ ├── items
│ ├── logo
│ └── rooms
server.js
Итак, я pm2 запускаю server.js
приложение отлично работает непосредственно на: port: Приложение отлично работает на root например, domain.com, и я могу использовать клиентские ссылки. Но когда я напрямую загружаю «глубокую ссылку», время ожидания сервера истекает.
Итак, вопрос в том, как настроить index
для обслуживания глубоких ссылок и по-прежнему поддерживать работу API-маршрутов на серверную часть узла.
Нужно ли мне очищать разные маршруты, например:
# declare API routes first
location /api {
try_files $uri @backend ;
}
# then everything else?
location / {
try_files $uri build/index.html;
}
Когда я это устанавливаю, кажется, что основной сайт обслуживается как неправильный тип mimetype или что-то в этом роде ...:
Uncaught SyntaxError: Unexpected token '<'
main.dd03fa6d.chunk.js:1 Uncaught SyntaxError: Unexpected token '<'
cbg.rik.ai/:1 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://cbg.rik.ai/static/css/main.573d8e92.chunk.css".
Полная конфигурация:
server {
listen 80;
server_name cbg.rik.ai;
root /mnt/ext250/web-apps/cbg.rik.ai;
access_log /var/log/nginx/cbg.access.log;
error_log /var/log/nginx/cbg.error.log;
index index.html;
# for other browser deep link routes serve the index file
location / {
try_files $uri build/index.html @backend;
}
# proxy to node app @backend
location @backend {
proxy_pass http://localhost:33010;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Following is necessary for Websocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# certbot stuff
}
связанные: React-router и nginx
документация try_files https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/#trying -several- варианты