Привет, я пытаюсь использовать API с помощью Nginx API Gateway: у меня есть этот URL: example.com/api/nodeapp. В моей настройке у меня есть контроллер Ingress, который открыт извне на .com и который принимает запрос на выполнение oauth и перенаправляет на внутренний модуль nginx (представленный как IP-служба кластера в частном кластере). также предоставляется как служба Cluster IP в том же частном кластере). Цель: я просматриваю URL-адрес как example.com/api/nodeapp ---> Ingress выполнит oauth и перенаправит запрос на Nginx (что происходит нормально), Nginx примет мой запрос и перенаправит меня на целевой микросервис nodeapp (который терпит неудачу в Ошибка 400) Мои фрагменты кода:
Ingress.yaml
спецификация:
правила:
- хост: example.com
http:
пути:
- путь: /api/nodeapp
серверная часть:
имя_службы: nginx-внутренняя служба
сервисПорт: 80
- путь: /апи/чай
серверная часть:
имя_службы: nginx-внутренняя служба
сервисПорт: 80
Nginx.conf
пользователь nginx;
рабочие_процессы авто;
error_log /var/log/nginx/error.log отладка;
pid /var/run/nginx.pid;
События {
worker_connections 1024;
}
http {
включить /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$статус $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
журнал_доступа /var/log/nginx/access.log основной;
отправить файл включен;
#tcp_npush включен;
keepalive_timeout 65;
#gzip включен;
включить /etc/nginx/api_gateway.conf;
включить /etc/nginx/conf.d/*.conf;
}
api_gateway.conf
включить api_backends.conf;
#include api_keys.conf;
сервер {
access_log /var/log/nginx/api_access.log основной; # Каждый API также может вести журнал в отдельный файл
слушать 80; # Конфигурация TLS находится здесь (для производственного использования)
имя_сервера пример.com;
# Конфигурация TLS
#ssl_certificate /etc/ssl/certs/api.example.com.crt;
#ssl_certificate_key /etc/ssl/private/api.example.com.key;
#ssl_session_cache общий:SSL:10m;
#ssl_session_timeout 5 м;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_protocols TLSv1.2 TLSv1.3;
# Недопустимый ресурс
место расположения / {
переписать ^ https://$host$request_uri навсегда;
}
# определения API, по одному на файл
включить api_conf.d/*.conf;
# ответы об ошибках
error_page 404 = @400; # Недопустимые пути рассматриваются как неверные запросы
местоположение @400 {
вернуть 400 '{"статус":400,"сообщение":"Неверный запрос"}\n';
}
proxy_intercept_errors включен; # Не отправлять ошибки бэкенда клиенту
включить error_json.conf; # Удобные для клиента API ответы на ошибки JSON
приложение по умолчанию_тип/json; # Если нет типа содержимого, то предположим, что это JSON
}
nodeapi_simple.conf
# API узла
#
расположение /API/ {
# Конфигурация политики здесь (аутентификация, ограничение скорости, ведение журнала и т. д.)
#
access_log /var/log/nginx/nodeapp_api.log основной;
# URI-маршрутизация
#
расположение /апи/чай {
прокси_пароль http://чай;
}
расположение /api/nodeapp {
proxy_pass http://nodeapp;
}
вернуть 404; # Универсальный
}
# vim: синтаксис=nginx
api_backend.conf
вышестоящее приложение узла {
зона nodeapp 64k;
сервер nodeapp IP: 8000;
}
вверх по течению чай {
зона чай 64k;
сервер чайного приложения IP: 80;
}
# vim: синтаксис=nginx
Мое основное внимание здесь сосредоточено на запуске example.com/api/nodeapp, который не работает, хотя я уже протестировал nodeapp на локальном хосте, и он работает нормально.Также странно, что это приложение для чая представляет собой просто образец текстового приложения, которое работает, когда я нажимаю в браузере URL-адрес example.com/api/tea, он работает [[1]: https://i.stack.imgur .com/3fP3k.png][1]s на приведенный ниже снимок:
Вот мои журналы
[1]: https://i.stack.imgur.com/jssnb.png][1]
Я застрял в этой ошибке с 3 дней, поэтому прошу всех помочь мне с этим при первой же возможности.