Что я здесь делаю не так?
Это работает:
location / {
alias /var/www/static/;
try_files $uri index.html =404;
}
Но это не так:
location /hello {
alias /var/www/static/;
try_files $uri index.html =404;
}
Вот ошибка, которую я получаю:
[error] 14428#0: *1 open() "/usr/share/nginx/html/bundle.js" failed (2: No such file or directory)
Я знаю, что Nginx ищет bundle.js из неправильного каталога. Он должен находиться в папке / var / www / static /.
Я могу исправить это, добавив
root /var/www/static/
в начале моей конфигурации, но затем, если я добавлю другое место, та же проблема возникнет снова.
location /world {
alias /var/www/another/;
try_files $uri index.html =404;
}
Ошибка:
[error] 14827#0: *1 open() "/var/www/static/bundle2.js" failed (2: No such file or directory)
bundle2.js должен находиться в папке / var / www / another /, но поскольку я определил root как / var / www / static /, Nginx ищет bundle2.js из неправильной папки.
Вот весь конфиг:
server {
listen 80;
root /var/www/static/;
location /hello {
alias /var/www/static/;
try_files $uri index.html =404;
}
location /world {
alias /var/www/another/;
try_files $uri index.html =404;
}
}
Как файл запрашивается внутри вашего html файла? Если вы запросите его с косой чертой в начале (<script src="/bundles.js"></script>
) он является корневым, что заставляет nginx искать файл в корневом каталоге веб-сайта, который с вашей первой конфигурацией был каталогом по умолчанию. Со второй конфигурацией nginx нашел ее в "/ var / www / static"
Если ваш .js вызывается <script src="bundles.js"></script>
(относительный путь) он должен работать.