Рейтинг:0

Проксировать все запросы на внутренний сервер

флаг cn

В настоящее время у меня есть приложение Angular, которое получает данные из бэкэнда Symfony. При разработке я использовал нг служить прокси-система сервера разработки для перенаправления /апи, /Oauth-токен и /СМИ маршруты к внутреннему серверу, и это работало нормально.

Теперь, когда я хочу развернуть приложение на веб-сервере, я настроил сервер Nginx, который обслуживает статические файлы, сгенерированные встроенным приложением Angular. Поскольку сервер разработки больше не проксирует запросы, я должен делать это через файлы конфигурации Nginx, чтобы у меня был функциональный обратный прокси.

Что мне просто нужно, так это то, что если я запрошу что-то вроде ПОЛУЧИТЬ http://localhost/api/products/1, этот запрос передается на ПОЛУЧИТЬ http://localhost:81/api/products/1. Это должно быть одинаковым для всех других методов запроса: POST, PUT, PATCH и т. д.

Проблема в том, что я не могу написать файл conf, который соответствует моим потребностям для этого варианта использования. Лучшее, что я получаю, это ответ 302 или 405.

Вот файл conf, который у меня сейчас есть:

сервер {
    имя_сервера локальный хост;
    корень /var/www/webapp;

    место расположения / {
        try_files $uri $uri//index.html;
    }

    расположение ~ ^/(?:oauth-токен|api|носитель)/ {
        proxy_pass http://localhost:81;
    }
}

Бэкенд размещается на том же сервере и экземпляре nginx, что и фронтенд, но на другом порту (порт 81 вместо 80).

Я попытался разделить свой блок местоположения на 3 отдельных блока для каждого маршрута на случай, если мое регулярное выражение или прокси-проход были неправильными, но я получаю те же результаты:

    расположение /API/ {
        proxy_pass http://localhost:81/api/;
    }

    местоположение / токен oauth / {
        proxy_pass http://localhost:81/oauth-token/;
    }

Я также попытался удалить косую черту в конце URL-адреса прокси-сервера, чтобы увидеть, была ли проблема в этом, но безрезультатно.

Я пытался следовать советам, которые нашел в других сообщениях о сбое сервера, но, к сожалению, мне ничего не помогло.

Можете ли вы помочь мне настроить этот файл, чтобы эти запросы API передавались через прокси на мой внутренний сервер? Спасибо.

Michael Hampton avatar
флаг cz
Ваш _first_ фрагмент конфигурации является хорошим, и вы должны использовать его в качестве основы для устранения неполадок и отказаться от другой конфигурации. Тем не менее, вам нужно точно указать, какие ошибки вы получили с ним. Воспроизведите проблему еще раз, а затем посмотрите журнал ошибок nginx.
флаг cn
Проблема в том, что журнал ошибок ничего не говорит. У меня есть только сообщения о «изящном завершении работы», которые я получаю при перезапуске моего докера nginx, поэтому мои файлы conf перезагружаются, поэтому я довольно озадачен. Журналы доступа просто показывают те же коды ответов 302 и 405, о которых я писал ранее.
Michael Hampton avatar
флаг cz
Тогда проблема с вашим приложением, и вам нужно искать там.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.