Конфигурация прокси-сервера Apache конфликтует с угловой маршрутизацией?

Я размещаю веб-сайт, созданный на Angular, на экземпляре Google Cloud Centos с Apache. Я запускаю node.js на том же сервере для моего API.

Первоначально у меня были проблемы с Apache, который пытался обслуживать страницы, которых не было, поскольку они были на самом деле угловыми маршрутами. Это было решено с помощью условий перезаписи, поэтому Apache будет обслуживать ресурс (компонент), если он существует, вместо поиска страницы.

Угловые маршруты:

const appRoutes: Routes = [
  { path: '',
    redirectTo: '/',
    pathMatch: 'full'
  },{
    path: '',
    component: HomeComponent
  },{
    path: 'about',
    component: AboutComponent
  } ...
]

Для отображения угловых компонентов:

<Directory "/var/www/html/me/dist">

    RewriteEngine on
    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]

    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.html [L]

</Directory>

Мой сервер узлов работает на порте:3000, поэтому у меня также есть прокси в моем конфигурационном файле Apache:

Прокси для API:

<VirtualHost *:80>

    ProxyRequests On
    ProxyPreserveHost On

    ServerName www.mydomain.com

    <Location /api>
        ProxyPass http://127.0.0.1:3000/
        ProxyPassReverse http://127.0.0.1:3000/
    </Location>

</VirtualHost>

Эта проблема

Когда выполняется вызов API, URL-адрес www.mydomain.com/api/info, но, поскольку это не компонент, Apache возвращает index.html, поэтому ответом на этот вызов API является HTML в index.html. www.mydomain.com:3000/info работает как обычно.

Есть ли способ, которым я могу обойти это? Или я что-то не так делаю? Будем очень благодарны любой помощи!

Спасибо

0 ответов

Другие вопросы по тегам