Конфигурация прокси-сервера 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
работает как обычно.
Есть ли способ, которым я могу обойти это? Или я что-то не так делаю? Будем очень благодарны любой помощи!
Спасибо