Служите веб-приложению, используя пользовательский путь URL, используя NGINX - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть приложение Angular, и я хочу обслуживать его локально, используя NGINX (на Windows). Приложение работает, если я просто go до http://localhost, но я хочу обслуживать свое приложение, используя http://localhost/my/ui в качестве базового пути. Здесь у меня кончились идеи. Я начал с этого:

server {
    listen      80;
    server_name localhost;

    location / {
        root html;
        try_files $uri $uri/ index.html;
    }
}

Я скопировал папку dist в папку NGINX html, чтобы упростить задачу. Файл index.html выглядит следующим образом:

<!doctype html>
<html>
<head>
    <title>Angular-AngularJS hybrid thingie</title>
    <base href="/">

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="icon" type="image/x-icon" href="favicon.ico" />
</head>

<body ng-cloak>
    <app></app>
    <script src="bundle.js"></script>
</body>
</html>

Я попытался поиграться с location и base href, установив один или другой на /my/ui, или даже оба, но я просто получаю 404.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

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

Вам необходимо изменить:

location / {
        root html;
        try_files $uri $uri/ index.html;
    }

К этому:

location /my/ui {
        root html;
        try_files $uri $uri/ index.html;
    }
0 голосов
/ 05 февраля 2020

Если ваше Angular приложение представляет собой обычные файлы, попробуйте поместить их в подпапку nginx - root root / my / ui. Установка <base href="."> вместо "/" позволит всем ссылкам на ресурсы разрешаться как относительный путь к http://localhost/my/ui

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