NGINX 404 ошибка при доступе к вложенным маршрутам React App - PullRequest
0 голосов
/ 19 марта 2020

Справочная информация / Цели:

Привет всем, здесь впервые постер!

В настоящее время я пытаюсь настроить NGINX так, чтобы он -

  1. Служит React App, когда заданы c маршруты, например, / auth /
  2. Проксирует все трафики c на маршруте / api к внутреннему узлу
  3. Обслуживает сайт Wordpress по всем другим маршрутам

Проблема: У меня есть блок местоположения / auth, определенный в моем файле конфигурации NGINX, который указывает на приложение React, содержащееся в папке /home/ubuntu/app/client/build.

Если я посещаю маршрут / auth, NGINX правильно обслуживает приложение React.

Однако, когда я делаю HTTP-запрос к вложенный маршрут (например, / auth / login) Я получаю ошибку 404.

Я попытался удалить файл конфигурации NGINX обратно, чтобы он содержал блок местоположения / auth, но проблема все еще сохраняется. Поэтому я не думаю, что это связано с другими настройками внутри файла.

Указание точных маршрутов не является жизнеспособным решением, так как многие другие маршруты, которые мне еще предстоит добавить, имеют динамические c вложенные значения Например, /users/someuniqueid.

Файл конфигурации

Надеемся, что следующее проливает свет на то, что я делаю неправильно. Обратите внимание, я удалил имя сервера из соображений конфиденциальности, поэтому не думайте, что я использовал это фактическое имя:)

server {
  listen 80;
  server_name myipaddress;
  root /home/ubuntu/wordpress;
  index index.php index.html index.htm;

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location /css {
    alias /home/ubuntu/app/client/build/css;
  }

  location /media {
    alias /home/ubuntu/app/client/build/media;
  }

  location /static {
    alias /home/ubuntu/app/client/build/static;
  }

  location /assets {
    alias /home/ubuntu/app/client/build/assets;
  }

  location /auth {
    alias /home/ubuntu/app/client/build;
  }

  location ~ \.php$ {
    fastcgi_split_path_info  ^(.+\.php)(/.+)$;
    fastcgi_index            index.php;
    fastcgi_pass             unix:/var/run/php/php7.3-fpm.sock; #Ubuntu 17.10
    include                  fastcgi_params;
    fastcgi_param   PATH_INFO       $fastcgi_path_info;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

  location /api {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  Host       $http_host;
    proxy_pass        http://localhost:5000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/myurl.io/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/myurl.io/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhusername.pem; # managed by Certbot
}

1 Ответ

0 голосов
/ 19 марта 2020

Эта проблема уже упоминалась здесь .

Попробуйте заменить конфигурацию location /auth на эту.

location /auth/ {
     alias  /home/ubuntu/app/client/build;
     index  index.html;

     try_files $uri $uri/ /index.html?$args;
}
location / {
    alias  WORD_PRESS_PATH_HERE;
    index index.php;

    location ~ \.php$ {
      fastcgi_split_path_info  ^(.+\.php)(/.+)$;
      fastcgi_index            index.php;
      fastcgi_pass             unix:/var/run/php/php7.3-fpm.sock; #Ubuntu 17.10
      include                  fastcgi_params;
      fastcgi_param   PATH_INFO       $fastcgi_path_info;
      fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Спасибо за чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...