Как настроить nginx для решения проблемы 404, не найденной в файле c файла vue? - PullRequest
2 голосов
/ 22 февраля 2020

Я использую nginx для запуска моего проекта. Поэтому я устанавливаю nginx на свой локальный хост, чтобы протестировать его

Моя конфигурация nginx на локальном хосте выглядит следующим образом:

location / {
    root   html;
    index  index.html index.htm;
}

Если я обновлю sh страницу, она будет иметь такую ​​ошибку, как это:

404 Not Found
nginx/1.14.0 (Ubuntu)

Я ищу в Google, и я получаю некоторые ссылки. Я пытаюсь так:

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

Я работаю. Там нет ошибки

Затем я разверну свой проект в производство

Моя конфигурация nginx на производстве, как это:

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

Это тоже работает

Но моя проблема в том, что мне нужно изменить местоположение так:

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

У меня много проектов в nginx. Поэтому я должен добавить /startup, чтобы показать, что это запускаемый проект. Но это делает ошибку следующим образом:

404 Not Found
nginx/1.14.0 (Ubuntu)

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 22 февраля 2020

Когда вы используете root в nginx, всегда добавляет маршрут к концу пути к файлу, но это не очевидно при использовании /. Итак, в ваших первых примерах с location / он ищет этот путь на сервере:

root + /www/dist + /

Но когда вы используете location /startup, он ищет этот путь, который не существует:

root + /www/dist + /startup

Таким образом, чтобы использовать root и "/ startup", вам понадобится каталог с именем "startup". Но вы можете использовать псевдоним. Попробуйте это:

location /startup {
    alias /www/dist;
    try_files $uri $uri/ /startup/index.html;
}

Документы Vue Router также рекомендуют нечто подобное. (Но они не показывают, как использовать подпапку alias.)

...