Я пытаюсь перенаправить запрос PUT для определенной конечной точки на другой хост.
Указанная конечная точка находится под /внутренний
и принимает только запросы PUT.
Другие конечные точки под /внутренний
будет по-прежнему обслуживаться моим основным хостом/сервером.
Я попытался настроить его, используя как правила перезаписи, так и прокси ([П]
) флаг и с помощью ПроксиПасс
директива - все это приводит к внутренней ошибке сервера 500, и запрос никогда не поступает на новый хост
Мое клиентское приложение использует простой клиент REST, который не может обрабатывать перенаправления, поэтому мне приходится использовать какой-то прокси.
Журналы Apache показывают следующее
[Чт, 10 февраля, 08:56:20.394444 2022] [rewrite:trace1] [pid 8579] mod_rewrite.c(480): [client XXX.XXX.XXX.XXX:XXXXX] XXX.XXX.XXX.XXX - - [subdomain1 .mydomain.com/sid#55d4ed07ecb0][rid#55d4ed2c5f20/initial] добро пожаловать с прокси-сервером запроса прокси: https://subdomain2.mydomain.com/internal/my-endpoint [OK]
Вот текущая конфигурация для конкретного виртуального хоста
<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>