Как настроить location для отдачи статики при любом пути, кроме /api/
Не могу даже понять как сделать просто при любом. Что то типо того, location * {}
server {
listen 80;
server_name example.com;
root /var/www/html;
location /api/ {
proxy_pass http://127.0.0.1:8080;
}
location / {
root /var/www/build;
}
}
В /var/www/build - у меня лежит сборка SPA. (index.html, js/, css/) И мне нужно, что бы я мог загружать SPA, не только заходя на example.com, но и при любом другом example.com/some-route
HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Tue, 05 May 2020 18:08:20 GMT
Content-Type: text/html
Content-Length: 2037
Last-Modified: Mon, 04 May 2020 20:42:11 GMT
Connection: keep-alive
ETag: "5eb07e23-7f5"
Accept-Ranges: bytes
Length: 2037 (2.0K) [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.
Ответы (1 шт):
Автор решения: Alexey Ten
→ Ссылка
На самом деле вы хотите что бы любой неизвестный файл открывал index.html. На самом деле я рекомендую не делать этого для папок /js и /css (у вас же нет таких роутов?). В результате получится примерно так:
server {
listen 80;
server_name example.com;
# сразу указываем правильный root
root /var/www/build;
# /api/ проксируем
location /api/ {
proxy_pass http://127.0.0.1:8080;
}
# если есть файл, то отдаём его, если нет, то отдаём /index.html
location / {
try_files $uri /index.html;
}
# для папок /js/ и /css/ не отдаём /index.html, это обычно не имеет смысла.
location /js/ {
# default
}
location /css/ {
# default
}
}