Tôi đang cố chuyển hướng yêu cầu PUT cho một điểm cuối cụ thể sang một máy chủ khác.
Điểm cuối nói trên nằm dưới /nội bộ
và chỉ chấp nhận các yêu cầu PUT.
Các điểm cuối khác dưới /nội bộ
sẽ tiếp tục được phục vụ bởi máy chủ/máy chủ chính của tôi.
Tôi đã thử thiết lập nó bằng cả quy tắc viết lại và sử dụng proxy ([P]
) cờ và sử dụng ProxyPass
chỉ thị - tất cả dẫn đến Lỗi 500 Máy chủ Nội bộ và yêu cầu không bao giờ được chuyển đến máy chủ mới
Ứng dụng khách của tôi sử dụng ứng dụng khách REST đơn giản không thể xử lý chuyển hướng, vì vậy tôi phải sử dụng một số loại ủy quyền.
Nhật ký Apache hiển thị như sau
[Thứ năm ngày 10 tháng 2 08:56:20.394444 2022] [viết lại:trace1] [pid 8579] mod_rewrite.c(480): [máy khách XXX.XXX.XXX.XXX:XXXXX] XXX.XXX.XXX.XXX - - [tên miền phụ1 .mydomain.com/sid#55d4ed07ecb0][rid#55d4ed2c5f20/initial] tiếp tục với proxy yêu cầu proxy: https://subdomain2.mydomain.com/internal/my-endpoint [OK]
Đây là cấu hình hiện tại cho vhost cụ thể
<VirtualHost *:80>
ServerName subdomain1.mydomain.com
ProxyPass /soap ajp://localhost:7007/soap retry=3
ProxyPreserveHost On
Redirect / https://subdomain1.mydomain.com/
ErrorLog /var/log/httpd/subdomain1_error
</VirtualHost>
<VirtualHost *:443>
ServerName subdomain1.mydomain.com
Options FollowSymlinks
ProxyRequests On
ProxyPreserveHost On
#RewriteEngine On
#RewriteCond %{REQUEST_URI} '^/internal/my-endpoint'
#RewriteCond %{REQUEST_METHOD} ^(PUT)
#RewriteRule "^/(.*)" "https://subdomain2.mydomain.com/internal/my-endpoint" [P]
ProxyPass /internal/my-endpoint https://subdomain2.mydomain.com/internal/my-endpoint
ProxyPassReverse /internal/my-endpoint https://subdomain2.mydomain.com/internal/my-endpoint
ProxyPreserveHost On
LogLevel alert rewrite:trace3
CustomLog /var/log/httpd/subdomain1_access_log common
ProxyPass / ajp://localhost:7007/ retry=3
ProxyPassReverse / ajp://localhost:7007/ retry=3
ProxyPreserveHost Off
ErrorLog /var/log/httpd/subdomain1
SSLEngine on
</VirtualHost>