Puncte:0

NGINX deservește mai multe aplicații unghiulare - erori lipsă fișiere statice

drapel bd
Pat

Aveți mai mult de o aplicație unghiulară deservită de un singur proxy invers nginx. Iată configurația mea pe care am încercat-o.

lucrător_procese 1;

error_log <%= ENV["APP_ROOT"] %>/nginx/logs/error.log;
evenimente { worker_connections 1024; }

http {

    client_max_body_size 3G;
    
    
    log_format upstream_time '$remote_addr - $remote_user [$time_local] '
                             '"$request" $status $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;  
        
    Server {
        asculta <%= ENV["PORT"] %>;
        nume_server gazdă locală;
        root <%= ENV["APP_ROOT"] %>/public;
        
        proxy_set_header X-Real-IP $adresă_la distanță;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $schema;
        proxy_http_versiunea 1.1;
        
        microservicii #springboot
        locație /monitoringserv/details/ {
            <% dacă ENV["FORCE_HTTPS"] %>
                dacă ($http_x_forwarded_proto != „https”) {
                returnează 301 https://$host$request_uri;
                }
            <% final %>           
            proxy_pass https://monitoring-c-serv.apps-dev.net;
            }
        
        locație /dashboardserv/queue/ {
            <% dacă ENV["FORCE_HTTPS"] %>
                dacă ($http_x_forwarded_proto != „https”) {
                returnează 301 https://$host$request_uri;
                }
            <% final %>           
            proxy_pass https://dashboard-c-serv.apps-dev.net;
            }
                
        #default UI landing page
        locație ~ .(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {                                    
            proxy_pass https://dashboard.apps-dev.net;
        }
                                
        locație ~ ^/admin/.*\.(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {
                try_files $request_uri $request_uri/ =404;  
        }

        locație ~ ^/monitoring/.*\.(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {    
                try_files $request_uri $request_uri/ =404;  
        }
                        
        #1-Adresa URL implicită a UI.
        Locație / {            
            proxy_pass https://dashboard.apps-dev.net;
        }
        
        locație /admin/ {          
            proxy_pass https://admin.apps-dev.net;;
        }
        
        locație /monitorizare/ {         
            proxy_pass https://monitoring.apps-dev.net;;
        }
    }
}

De asemenea, construiți aplicații unghiulare cu

ng build --prod --base-href /admin/
ng build --prod --base-href /monitoring/

Când lansez aplicația de tablou de bord a aplicației s-a deschis bine și când încarc administratorul sau monitorizarea, am primit o eroare care spune că lipsesc fișierele statice.

drapel us
Vă rugăm să adăugați configurația completă a nginx așa cum este arătat de `nginx -T`.
Pat avatar
drapel bd
Pat
@TeroKilkanen a adăugat codul de configurare complet.
drapel us
Aceasta nu este rezultatul lui `nginx -T`. nginx nu are etichete `` în configurația sa. Vă rugăm să furnizați rezultatul `nginx -T`.
Puncte:1
drapel in

Problemă cu regexe, încercați

locație ~ ^/admin/.*\.(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {
    try_files $request_uri $request_uri/ =404;  
}
locație ~ ^/monitoring/.*\.(html|js|css|eot|svg|ttf|woff|woff2|png|gif|ico|jpg|jpeg)$ {    
    try_files $request_uri $request_uri/ =404;  
}

a, și nu uitați să reporniți nginx și să ștergeți memoria cache a browserului.

Pat avatar
drapel bd
Pat
@gerard-h-pille Mulțumesc, am încercat mai sus regex și aceeași problemă - „Nu s-a încărcat scriptul modulului: mă așteptam la un script al modulului JavaScript, dar serverul a răspuns cu un tip MIME „text/html”. Verificarea strictă a tipului MIME este impusă pentru scripturi de module conform specificațiilor HTML." De asemenea, am actualizat codul complet în cauză.
Gerard H. Pille avatar
drapel in
Pentru mine, asta sună diferit de „fișier static lipsă”. Nu văd nimic în configurația dvs. cu privire la tipurile de mime.
Pat avatar
drapel bd
Pat
@gerard-h-pille, fișierul meu prost și static a dispărut după remedierea regex. Dar o eroare strictă de tip MIME vine după ce am adăugat baseHref în unghiular. De asemenea, am descoperit că de la consola browserului NGINX așteaptă cererile de fișiere de resurse (cum ar fi fișierele JS) pe adrese URL configurate ca valorile baseHref și nu a putut fi găsit. De asemenea, în fila surse a instrumentelor pentru dezvoltatori de browser, văd doar index.html (fișier gol) fără alte fișiere pentru aplicații „admin” sau „monitorizare”. Așadar, îmi lipsește unele configurații în nginx?
Gerard H. Pille avatar
drapel in
Nginx nu se „așteaptă” niciodată la solicitări. Dacă browserul nu face solicitări, există o problemă cu browserul sau - mai probabil - cu html-ul dvs. Cu un index.html gol, browserul nu are niciun motiv să facă solicitări suplimentare. Vă rugăm să abordați mai întâi remarcile lui Tero: care este configurația pe care ați adăugat-o?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.