ฉันพยายามเปลี่ยนเส้นทางคำขอ PUT สำหรับปลายทางเฉพาะไปยังโฮสต์อื่น
จุดสิ้นสุดดังกล่าวอยู่ภายใต้ /ภายใน
และยอมรับเฉพาะคำขอ PUT
จุดสิ้นสุดอื่น ๆ ภายใต้ /ภายใน
จะยังคงให้บริการโดยโฮสต์/เซิร์ฟเวอร์หลักของฉันต่อไป
ฉันได้ลองตั้งค่าโดยใช้ทั้งกฎการเขียนซ้ำและใช้พร็อกซี ([พ]
) แฟล็กและการใช้ พร็อกซีพาส
คำสั่ง - ทั้งหมดส่งผลให้เกิด 500 Internal Server Error และคำขอไม่เคยส่งไปยังโฮสต์ใหม่
แอปพลิเคชันไคลเอนต์ของฉันใช้ไคลเอนต์ REST อย่างง่ายที่ไม่สามารถจัดการการเปลี่ยนเส้นทางได้ ดังนั้นฉันจึงต้องใช้พร็อกซีบางประเภท
บันทึก Apache แสดงดังต่อไปนี้
[พฤ. 10 ก.พ. 08:56:20.394444 2022] [rewrite:trace1] [pid 8579] mod_rewrite.c(480): [client XXX.XXX.XXX.XXX:XXXXXX] XXX.XXX.XXX.XXX - - [subdomain1 .mydomain.com/sid#55d4ed07ecb0][rid#55d4ed2c5f20/initial] ดำเนินการต่อด้วยพร็อกซีคำขอพร็อกซี: https://subdomain2.mydomain.com/internal/my-endpoint [ตกลง]
นี่คือการกำหนดค่าปัจจุบันสำหรับ vhost เฉพาะ
<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>