Puncte:0

Are cineva o soluție pentru a accesa un subfolder al aplicației mele din spatele proxy-ului nginx?

drapel us

Am două servere cu adrese IP diferite:

  • Tomcat deservește aplicația mea web https://app1.domain.com (centos6)
  • Nginx acționând ca waf prin https://nginx.domain.com (centos7)

Nginx rulează pe portul 443 și îl folosesc pentru a inversa aplicația mea web în acest fel:

locație /app1/ {
    rescrie ^/app1(.*) /$1 pauză; 
    proxy_pass https://app1.domain.com/;
}

În acest fel, în mod normal îmi accesez aplicația web prin nginx prin https://nginx.domain.com/app1/.

În al doilea rând, în RĂDĂCINĂ folderul aplicației mele web, am instalat aplicația birt-viewer în ROOT/birt-viewer pliant. În mod normal, accesez aplicația birt-viewer când folosesc linkul https://app1.domain.com/birt-viewer.

Cu toate acestea, în mod normal nu accesez aplicația birt când folosesc linkul https:// nginx.domain.com/app1/birt-viewer. Când copiez de exemplu linkul

/birt-viewer/Task.jsp?__report=Recare.rpgn&sample=my+parameter&__sessionId=2026

și îl lipesc după link https://nginx.domain.com/app1 pentru a obține legătura finală

https://nginx.domain.com/app1/birt-viewer/Task.jsp?__report=Recare.rpgn&sample=my+parameter&__sessionId=2026

Accesez aplicația birt-viewer dar pierd setări precum cookie-uri și sesiuni.

Înțelegeți că pentru a accesa aplicația mea web prin nginx, trebuie să o fac manual; dezavantajul este pierderea cookie-urilor, a sesiunilor și a altor parametri. Totuși, accesul ar trebui să se facă automat, fără probleme.

Aceasta este configurația mea nginx:

utilizator nginxxxx;
lucrător_procese 1;
error_log /var/log/error.log warn;
pid logs/nginx.pid;
evenimente {
    conexiuni_muncitor 1024;
}
http {
# include mime.types;
    includ /opt/nginx/conf/mime.types;    
    includ /opt/nginx/conf/naxsi_core.rules;
    aplicație de tip_default/octet-stream;
    log_format principal „$remote_addr - $remote_user [$time_local] „$request” '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/access.log principal;
    sendfile activat;
    tcp_nopush activat;
    keepalive_timeout 65;
    tcp_nodelay activat;
    gzip on;
    gzip_disable „MSIE [1-6].(?!.*SV1)”;
    client_max_body_size 100m;
    client_body_buffer_size 10K;

    Server {
         asculta 443 ssl;
        nume_server nginx.domain.com;
    access_log on ;
        access_log /var/log/access.log principal;
    error_log on ;
        error_log /var/log/error.log warn;
        ssl_certificate /etc/ssl/certs/m.crt;
        ssl_certificate_key /etc/ssl/private/cs.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers activat;
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;" mereu;
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
    error_page 403 /403_error.html;
        locație = /403_error.html {
            root /usr/share/nginx/htmml;
            intern;
        }

    error_page 404 /404_error.html;
        locație = /404_error.html {
            root /usr/share/nginx/html;
            intern;
        }


 locație /app1/
         {
rescrie ^/app1(.*) /$1 pauză;
proxy_connect_timeout 60000;
proxy_send_timeout 60000;
proxy_read_timeout 60000;
send_timeout 60000;
proxy_pass https://app1.domain.com/;
   }

locație /app1/birt-viewer/ {
    rescrie ^/app1/folder1(.*) /$1 pauză; 
    proxy_pass https:// app1.domain.com/birt-viewer/;
}

           }

}

De asemenea, îmi dau seama că, odată ce aplicația mea web este în spatele nginx, unele adrese URL nu sunt actualizate și încă păstrează vechiul acces.

Deci preocuparea mea este să accesez aplicația birt-viewer automat (nu manual) prin nginx via https://nginx.domain.com/app1/birt-viewer

Are cineva o solutie pentru mine?

user11665472 avatar
drapel us
Erată! Erată Am vrut să spun că nu pot accesa fișierele din aceste foldere prin **nginx.domain.com/app1/folder1** sau **nginx.domain.com/app1/folder2**; Primesc eroarea 404 Are cineva o soluție pentru a accesa un subfolder al aplicației mele din spatele proxy-ului nginx?
djdomi avatar
drapel za
Întrebările care caută ajutor pentru instalare, configurare sau diagnosticare trebuie să includă starea finală dorită, problema sau eroarea specifică, informații suficiente despre configurație și mediu pentru a o reproduce și soluțiile încercate. Întrebările fără o declarație clară a problemei nu sunt utile altor cititori și este puțin probabil să obțină răspunsuri bune.
user11665472 avatar
drapel us
Domnule Djdomi Vă mulțumim pentru comentarii; Tocmai am editat întrebarea cu mai multe detalii.
djdomi avatar
drapel za
configurația showb nu reflectă starea curentă utilizată, ai obscucat ceva? vă rugăm să afișați și să distribuiți configurația corectă. nginx -T te ajută
user11665472 avatar
drapel us
Domnule Djdomi Inca o data Multumesc pentru comentarii; Tocmai am editat întrebarea cu întreaga configurație nginx.

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.