Nginx try_files загружает пустую страницу при передаче с переменным путем

Я настраиваю nginx для работы с React SPA. Страница загружается нормально, когда я не включаю переменный путь (/rsvp/). Но когда я попытаюсь (/rsvp/S0mEtH1NG), он загрузит файлы index, manifest, css... но фактически не применит эти вещи к index.html. Я почти просто вижу свой index.html, на самом деле ничего не загружено.

Мой конфиг выглядит примерно так:

server {
    listen 80;
    server_name something.com;

    location / {
        root /srv/something.com/webroot;
        index index.html;
    }

    location /rsvp {
        alias /srv/rsvp/build;
        try_files $uri $uri/ /rsvp/index.html;
    }
}

Если у меня есть try_files $uri $uri/ /index.html, он загрузит index.html корня (/), но с аналогичной проблемой в том, что он не использует какой-либо CSS.

Спасибо за помощь, это очень ценно!


person RollinRight    schedule 26.07.2017    source источник
comment
У вас отсутствует ;.   -  person Richard Smith    schedule 26.07.2017
comment
Спасибо! (исправлено, но это было просто из-за ручного ввода конфигурации)   -  person RollinRight    schedule 26.07.2017


Ответы (1)


Существует давняя проблема с alias и try_files. Я бы не стал использовать эти директивы в одном блоке. Пытаться:

location /rsvp {
    alias /srv/rsvp/build;
    if (!-e $request_filename) { rewrite ^ /rsvp/index.html? last; }
}

См. это предупреждение об использовании if.

person Richard Smith    schedule 26.07.2017
comment
Хм... все равно не повезло. Мой index.html загружается в обоих случаях, и другие файлы загружаются нормально, если смотреть на вкладку сети. Он просто не применяет javascript или css. Как вы думаете, это может быть не ошибка nginx? Все работает нормально, когда я перехожу к /rsvp/, а не к /rsvp/*. - person RollinRight; 27.07.2017
comment
Да, похоже, это была проблема с реактивным маршрутизатором. Пошел дальше и отметил правильный ответ, хотя для знания alias/try_files. Спасибо. - person RollinRight; 27.07.2017