Обслуживание интерфейса React и серверной части Flask с использованием Nginx в качестве обратного прокси

#reactjs #nginx #flask #gunicorn

#reactjs #nginx #flask #gunicorn

Вопрос:

Я пытался настроить интерфейс React и серверную часть Flask, используя Nginx в качестве обратного прокси, чтобы различать их. У меня есть серверная часть flask, на которой запущен сервер Gunicorn на localhost: 5000, но, похоже, я не могу получить блок местоположения Nginx для его регистрации. Мой конфигурационный файл выглядит следующим образом:

 server {
  listen 80;
  root /var/www/[react-app-domain-name]/html;
  index index.html index.htm;

  access_log /var/log/nginx/reverse-access.log;
  error_log /var/log/nginx/reverse-error.log;

  location / {
    try_files $uri $uri/ = 404;
  }

  location /api {
    include proxy_params;
    proxy_pass http://localhost:5000;
  }
}
  

Я понимаю, что это должно направлять весь трафик через мое приложение react в root, за исключением запросов с «/ api», которые затем должны быть перенаправлены через мой внутренний интерфейс Flask api. Однако, когда я пытаюсь получить доступ к маршруту / api, все, что я получаю обратно, — это ответ 404. Это также происходит, если я использую true для доступа к нему через curl в командной строке.

Вот журнал ошибок 404, который у меня есть:

 2020/09/09 21:03:05 [crit] 36926#36926: *114 connect() to unix:/home/[name]/backend/backend.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: , request: "GET /api/ HTTP/1.0", upstream: "http://unix:/home/[name]/backend/backend.sock:/api/", host: "[hostname]"
  

Любая помощь была бы очень признательна. Я рву на себе волосы здесь. Спасибо.

Комментарии:

1. Я использую аналогичную настройку для одного из своих проектов. Попробуйте переместить строку, начинающуюся с root и index , в область location / { и посмотрите, имеет ли это значение.

2. Просто пробовал, к сожалению, не помогло. Тем не менее, спасибо за предложение. Мне интересно, не напортачил ли я где-нибудь в какой-нибудь другой обстановке, которая все портит, а я даже не знаю об этом.

3. Понял, что у тебя в proxy_params?

4. Вы добавили "proxy": "http://localhost:5000" в конец своего package.json ?