Рейтинг:0

NGINX, обслуживающий несколько угловых приложений - ошибка отсутствия статических файлов

флаг bd
Pat

Иметь более 1 приложения angular, обслуживаемого одним обратным прокси-сервером nginx. Вот мой конфиг, который я пробовал.

рабочие_процессы 1;

error_log <%= ENV["APP_ROOT"] %>/nginx/logs/error.log;
события { worker_connections 1024; }

http {

    client_max_body_size 3G;
    
    
    log_format upstream_time '$remote_addr - $remote_user [$time_local] '
                             '"$запрос" $статус $body_bytes_sent '
                             '"$http_referer" "$http_user_agent" '
                             'rt="$request_time" uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time" ua="$upstream_addr" ';
                             
    access_log <%= ENV["APP_ROOT"] %>/nginx/logs/access.log upstream_time;  
        
    сервер {
        слушать <%= ENV["ПОРТ"] %>;
        имя_сервера локальный хост;
        root <%= ENV["APP_ROOT"] %>/public;
        
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
        прокси_http_версия 1.1;
        
        #спрингбут микросервисы
        местоположение /monitoringserv/details/ {
            <% если ENV["FORCE_HTTPS"] %>
                если ($http_x_forwarded_proto != "https") {
                вернуть 301 https://$host$request_uri;
                }
            <% конец%>           
            proxy_pass https://monitoring-c-serv.apps-dev.net;
            }
        
        расположение /dashboardserv/queue/ {
            <% если ENV["FORCE_HTTPS"] %>
                если ($http_x_forwarded_proto != "https") {
                вернуть 301 https://$host$request_uri;
                }
            <% конец%>           
            proxy_pass https://dashboard-c-serv.apps-dev.net;
            }
                
        #default целевая страница пользовательского интерфейса
        расположение ~ .(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {                                    
            proxy_pass https://dashboard.apps-dev.net;
        }
                                
        расположение ~ ^/admin/.*\.(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {
                try_files $request_uri $request_uri/ =404;  
        }

        расположение ~ ^/monitoring/.*\.(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {    
                try_files $request_uri $request_uri/ =404;  
        }
                        
        #1-URL пользовательского интерфейса по умолчанию.
        место расположения / {            
            proxy_pass https://dashboard.apps-dev.net;
        }
        
        местоположение /администратор/ {          
            proxy_pass https://admin.apps-dev.net;;
        }
        
        местоположение /мониторинг/ {         
            proxy_pass https://monitoring.apps-dev.net;;
        }
    }
}

Также создавайте угловые приложения с

сборка ng --prod --base-href/admin/
сборка ng --prod --base-href /monitoring/

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

флаг us
Пожалуйста, добавьте полную конфигурацию nginx, как показано в `nginx -T`.
Pat avatar
флаг bd
Pat
@TeroKilkanen добавил полный код конфигурации.
флаг us
Это не вывод `nginx -T`. nginx не имеет тегов `` в своей конфигурации. Пожалуйста, предоставьте вывод `nginx -T`.
Рейтинг:1
флаг in

Проблема с регулярными выражениями, попробуйте

расположение ~ ^/admin/.*\.(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {
    try_files $request_uri $request_uri/ =404;  
}
расположение ~ ^/monitoring/.*\.(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {    
    try_files $request_uri $request_uri/ =404;  
}

о, и не забудьте перезапустить nginx и очистить кеш браузера.

Pat avatar
флаг bd
Pat
@ gerard-h-pille Спасибо, попробовал выше регулярное выражение и та же проблема - «Не удалось загрузить скрипт модуля: ожидался скрипт модуля JavaScript, но сервер ответил типом MIME «text/html». Строгая проверка типа MIME применяется для скрипты модулей в соответствии со спецификацией HTML». Также я обновил полный код, о котором идет речь.
Gerard H. Pille avatar
флаг in
Для меня это звучит иначе, чем «отсутствует статический файл». Я не вижу ничего в вашей конфигурации относительно типов пантомимы.
Pat avatar
флаг bd
Pat
@gerard-h-pille, мой плохой статический файл исчез после исправления регулярных выражений. Но строгая ошибка типа MIME появляется после того, как я добавил baseHref в angular. Также я обнаружил, что из консоли браузера NGINX ожидает запросов файлов ресурсов (например, файлов JS) по URL-адресам, настроенным как значения baseHref, и не может быть найден. Также на вкладке источников инструментов разработчика браузера я вижу только index.html (пустой файл) без других файлов для приложений «admin» или «monitoring». Значит, мне не хватает какой-то конфигурации в nginx?
Gerard H. Pille avatar
флаг in
Nginx никогда не «ожидает» запросов. Если браузер не делает запросов, проблема в браузере или, что более вероятно, в вашем html. С пустым index.html у браузера нет причин делать дополнительные запросы. Пожалуйста, сначала ответьте на замечания Теро: что это за конфигурация, которую вы добавили?

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

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