nginx направляет все, кроме нескольких, в папку - PullRequest
0 голосов
/ 22 февраля 2019

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

server {
    listen 80;
    server_name bla;

    location /api {
      include uwsgi_params;
      uwsgi_read_timeout 600;
      uwsgi_pass unix:/var/www/html/site.sock;
    }

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

В основном у меня есть внешний интерфейс Vue и внутренний интерфейс Flask / uWSGI.Все внутренние запросы (/ api) охватываются этим первым правилом расположения.Все запросы переднего плана покрываются вторым.Прекрасно работает.

Что я хочу сделать, это исключение для нескольких маршрутов, для которых нет префикса api/, в которых они перенаправляются на сервер, а не на интерфейс.

Например, я хочу иметь возможность отправлять /this-is-an-api-request на сервер, а не перенаправлять в index.html.Я не могу использовать перенаправления, потому что есть некоторые запросы POST, и мне не удалось перенаправить их.

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете использовать error_page для пересылки всех запросов, которые вызывают ошибку 404, в бэкэнд ( docs ).

server {
    listen 80;
    server_name bla;

    location /api {
        include uwsgi_params;
        uwsgi_read_timeout 600;
        uwsgi_pass unix:/var/www/html/site.sock;
    }

    location / {
        error_page 404 = @error;
        root /var/www/html;
    }

    location @error {
        include uwsgi_params;
        uwsgi_read_timeout 600;
        uwsgi_pass unix:/var/www/html/site.sock;
    }
}
...