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?