установка корня документа в Angular 5.6.0 за прокси Varnish - PullRequest
0 голосов
/ 15 мая 2018

Приложение My Angular 5 будет работать за прокси-лаком.Скажем, наш корпоративный веб-сайт работает на test.corporate.com, а мой локальный компьютер - dev5.local, тогда в настоящее время система управления лаком настроена на управление от https://test.corporate.com/albert до http://dev5.local:4200/ (но онимогу указать на что угодно).Это прокси, а не редирект.В моем угловом index.html, работающем с ng-serve, я настроил documentroot:

<base href="/albert/">

Когда я захожу в своем браузере на https://test.corporate.com/albert/, HTML-файл моего index.html загружается, новсе остальные файлы (css, javascript) не загружаются.То же самое происходит, когда я перехожу к http://dev5.local:4200/,, но последний не работает, имеет смысл из-за documentroot.

Мы пробовали варианты вышеупомянутых конфигурации лака и documentroot, но ничего не кажетсяработать.С приведенным выше конфигом, который является наиболее подходящим для меня вариантом, он пытается и не может загрузить https://test.corporate.com/albert/inline.bundle.js.Мне также кажется, что я не могу вручную редактировать URL-адрес и посмотреть, могу ли я загрузить этот js-файл в свой браузер, например, https://test.corporate.com/albert/albert/inline.bundle.js также выдает «not found» с перенаправлением.

КакHTML действительно загружается, это не должно быть связано с http против https.

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Вы можете сделать что-то вроде этого (в зависимости от конфигурации маршрутизатора):

<!--angular routing-->
<script type="text/javascript">
   document.write('<base href="' + document.location.href.split('#')[0] + '" />');
</script>
0 голосов
/ 25 мая 2018

Я не уверен насчет Varnish Proxy, но я столкнулся с той же проблемой при развертывании своего кода на сервере apache-tomcat и обслуживании сайта не из '/', а из '/ anotherPath /' в angular 4.

То, что я сделал при сборке приложения, я добавил ниже 2 атрибутов в команду сборки

ng build --prod --base-href "/" --deployUrl="/anotherPath/"

Опубликовать эту сборку. Я обновил <base href="/"> до <base href="/anotherPath/"> в файле index.html внутри вновь созданной папки dist, а затем развернул его на сервере.

Это был обходной путь, который решил мою проблему.

Как только вы исправите это, вы также можете столкнуться с другой проблемой, т. Е. Перезагрузка не будет работать, поскольку вы будете обслуживать из «/ anotherPath /», а не «/». Например, при перезагрузке https://test.corporate.com/albert/user/login вы получите ошибку.

Для этого в apache-tomcat мы настроили правила перезаписи. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

0 голосов
/ 21 мая 2018

У вас есть два варианта: либо просмотреть все ваши статические файлы и добавить их относительные пути в index.html.

ИЛИ

Вы можете использовать бегунка задач, например, Grunt с пакетами типа grunt-injector , с помощью которого вы можете проверить все статические файлы, которые вы хотите использовать, из папки проекта, и он автоматически добавит относительный путь в файл index.html.

...