При настройке обратного прокси-сервера Nginx как для приложения React, так и для веб-сервера Node, похоже, он сломал Express на бэкэнде, хотя я могу сказать, что получаю доступ к нему в браузере, получив «Cannot GET XX»сообщения после добавления второго блока местоположения, который вскоре последует ниже (ранее браузер был просто белым при посещении конечных точек API, потому что React Router пытался их захватить).
Вот как выглядит конфигурация, где находится порт 3000мое приложение React и 4000 - это мой сервер Express, оба управляются с помощью pm2:
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name www.mywebsite.com; # managed by Certbot
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /api/ {
proxy_pass http://127.0.0.1:4000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Простой маршрут Express, который не будет работать ("Cannot GET /"):
app.get('/', (req, res) => {
res.send('Hello, world!');
});
Есть некоторые дополнительные вещи для certbot, которые были сгенерированы для SSL, но я не уверен, что это актуально. Приложение React работает отлично, но независимо от того, как я называю свои маршруты в Express, независимо от того, как они работали раньше, независимо от того, как я называю свои маршруты в Express, независимо от того, как они называются - «location / api /» против «location / api», они все не могут. Заранее благодарен за любые рекомендации!
РЕДАКТИРОВАТЬ: я изменил conf сервера на как минимум map / api / для корня моего сервера с обратной косой чертой, поэтому мне не нужно добавлять / api к каждому обработчику маршрута,но проблема все еще остается ("Cannot GET /").