Я пытаюсь настроить следующий JS + ExpressJS сайт на Apache. У меня есть обратный прокси, который перенаправляет любой запрос на http://1.23.45.67
(мой ip на порту 80) на localhost:3000
, где работает мой сервер nodejs. Когда я поднимаю сайт в браузере, все выглядит нормально. Images / css загружается правильно, и я могу перемещаться по сайту, но всякий раз, когда к бэкэнду делается запрос ajax (например, вызов API для регистрации пользователя), он делает это с URL-адресом запроса http://1.23.45.67/undefined/api/v1/users/register
.
Мой виртуальный хост apache config выглядит как
<VirtualHost *:80>
ServerName www.myservername.com
ServerAlias myservername.com
DocumentRoot /var/www/myapp/html
ErrorLog /var/www/myapp/log/error.log
CustomLog /var/www/myapp/log/requests.log combined
ProxyRequests on
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
Я генерирую ajax URL-адрес запроса, используя переменную base url из файла .env. Я также пробовал http://localhost/
и http://localhost:3000/
как BASE_URL
# simplified .env file
...
BASE_URL=http://1.23.45.67/
...
# simplified register page where we make the ajax request.
...
fetch(`${process.env.BASE_URL}/api/v1/users/register`, {method: 'GET'});
...