Tôi có hai máy chủ có địa chỉ IP khác nhau:
- Tomcat phục vụ ứng dụng web của tôi
https://app1.domain.com
(centos6)
- Nginx hoạt động như waf thông qua
https://nginx.domain.com
(centos7)
Nginx đang chạy trên cổng 443 và tôi đang sử dụng nó để đảo ngược proxy ứng dụng web của mình theo cách này:
vị trí /app1/ {
viết lại ^/app1(.*) /$1 break;
proxy_pass https://app1.domain.com/;
}
Bằng cách này, tôi thường truy cập ứng dụng web của mình qua nginx thông qua https://nginx.domain.com/app1/
.
Thứ hai, trong NGUỒN GỐC
thư mục của ứng dụng web của tôi, tôi đã cài đặt ứng dụng birt-viewer trong ROOT/người xem sinh
thư mục. Tôi thường truy cập ứng dụng birt-viewer khi sử dụng liên kết https://app1.domain.com/birt-viewer
.
Tuy nhiên, tôi thường không truy cập ứng dụng birt khi tôi sử dụng liên kết https://nginx.domain.com/app1/birt-viewer
. Khi tôi sao chép ví dụ liên kết
/birt-viewer/Task.jsp?__report=Recare.rpgn&sample=my+parameter&__sessionId=2026
và tôi dán nó sau liên kết https://nginx.domain.com/app1
để có được liên kết cuối cùng
https://nginx.domain.com/app1/birt-viewer/Task.jsp?__report=Recare.rpgn&sample=my+parameter&__sessionId=2026
Tôi truy cập ứng dụng birt-viewer nhưng tôi mất các cài đặt như cookie và phiên.
Bạn hiểu rằng để truy cập ứng dụng web của tôi qua nginx, tôi phải thực hiện thủ công; nhược điểm là mất cookie, phiên và các tham số khác.
Tuy nhiên, việc truy cập nên được thực hiện tự động mà không gặp sự cố.
Đây là cấu hình nginx của tôi:
người dùng nginxxxx;
worker_processes 1;
error_log /var/log/error.log cảnh báo;
nhật ký pid/nginx.pid;
sự kiện {
công_nhân kết_nối 1024 ;
}
http {
# bao gồm mime.types;
bao gồm /opt/nginx/conf/mime.types;
bao gồm /opt/nginx/conf/naxsi_core.rules;
ứng dụng default_type/octet-stream;
log_format chính '$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 chính;
gửi tệp trên;
bật tcp_nopus;
keepalive_timeout 65;
bật tcp_nodelay;
bật gzip;
gzip_disable "MSIE [1-6].(?!.*SV1)";
client_max_body_size 100m;
client_body_buffer_size 10K;
người phục vụ {
nghe 443 ssl;
server_name nginx.domain.com;
truy cập_đăng nhập;
access_log /var/log/access.log chính;
error_log on ;
error_log /var/log/error.log cảnh báo;
ssl_certificate /etc/ssl/certs/m.crt;
ssl_certificate_key /etc/ssl/private/cs.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers CAO:!aNULL:!MD5;
bật ssl_prefer_server_ciphers;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;" luôn;
add_header X-Frame-Options CÙNG GỐC;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
error_page 403 /403_error.html;
vị trí = /403_error.html {
gốc /usr/share/nginx/htmml;
nội bộ;
}
error_page 404 /404_error.html;
vị trí = /404_error.html {
gốc /usr/share/nginx/html;
nội bộ;
}
vị trí /app1/
{
viết lại ^/app1(.*) /$1 break;
proxy_connect_timeout 60000;
proxy_send_timeout 60000;
proxy_read_timeout 60000;
gửi_thời gian chờ 60000;
proxy_pass https://app1.domain.com/;
}
vị trí /app1/birt-viewer/ {
viết lại ^/app1/folder1(.*) /$1 break;
proxy_pass https://app1.domain.com/birt-viewer/;
}
}
}
Tôi cũng nhận ra rằng một khi ứng dụng web của tôi chạy sau nginx, một số url không được cập nhật và vẫn giữ quyền truy cập cũ.
Vì vậy, mối quan tâm của tôi là tự động truy cập ứng dụng birt-viewer (không phải thủ công) thông qua nginx qua https://nginx.domain.com/app1/birt-viewer
Có ai có một giải pháp cho tôi?