куб? сейчас переношу аппки laravel+swagger api
как только переезжает это всё добро в куб со связкой nginx ingress controller + sidecar nginx + app, апи тупо перестает работать, в network коносоли вижу 404 на файлы ассетов(хотя они есть в контейнере сто проц), и Refused to execute script from 'https://foobar/docs/asset/swagger-ui-standalone-preset.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
это какой-то капец, первый раз такое вижу, уже 3 часа дебажусь
из того что пробовал, добавлять аннотации на nginx ingress
nginx.ingress.kubernetes.io/server-snippet: |
location ~ (^/docs/asset/.*) {
try_files $uri $uri/ /index.php$is_args$args;
}
например это хотя бы фиксит проблему 404 на ассетах
так же pathType: Prefix на ingress ресурсе
также есть хидеры такие для безопасников но их отелючение не помогает:
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Frame-Options SAMEORIGIN";
more_set_headers "X-XSS-Protection 1; mode=block";
more_set_headers "X-Content-Type-Options nosniff";
при этом ошибка с MIME types уходит, но появляется Uncaught SyntaxError: Unexpected token '<' (at swagger-ui-bundle.js?v=a437b459d85fa2b52ff24f3a3aca375c:1:1)
Зачем вы пытаетесь отдавать статику самим ингрессом, а не подом приложения? Ваша ларавель вполне может сама содержать и файлы статики и nginx или apache2 или whatever для отдачи, а ингресс только лишь направляет трафик в под, и нет никаких проблем.
я и отдаю подом сайдкар нжинкса который смотрит на пхп-фпм лары оба пода смотрят в один каталог с файлами но оно чет не работает как надо, то я уже пробовал на контроллере роут сделать, думал может с ним беда
Отстаньте от ингресс контроллера и настройте правильно конфиг вашего sidecar nginx
тогда такой вопрос почему на совершенно простом старом сетапе, nginx + php-fpm на сервере без контейнеров и прочего оно нормально всё запускает и отрисовывает, а тут прям вообще беда при этом никаких локейшенов специфических нет, просто прокся на пхп-фпм
вы что-то странное делаете. Я советую постепенно двигаться: 1. Найдите конкретный URL, который не работает. curl -i 'https://foobar/docs/asset/swagger-ui-standalone-preset.js' например сделайте и посмотрите, что там с заголовками и контентом. 2. Запустите вспомогательный под в кластере и проверьте, что будет, если к вашему поду напрямую запрос сделать. 3. Теперь сделайте из этого пода запрос не в под, а в сервис. Лично мне кажется, что у вас где-то порт перепутан или подобная опечатка. И ingress-controller вам отдаёт HTML с ошибкой, которую вы мужественно пытаетесь переделать в JavaScript.
Обсуждают сегодня