Estou tentando redirecionar a solicitação PUT para um endpoint específico para outro host.
O referido endpoint reside /internal
e aceita apenas solicitações PUT. Os outros endpoints abaixo /internal
continuarão sendo servidos pelo meu host/servidor principal.
Eu tentei configurá-lo usando as regras de reescrita e usando o [P]
sinalizador proxy() e usando a ProxyPass
diretiva - tudo resultando em um erro interno do servidor 500 e a solicitação nunca chega ao novo host
Meu aplicativo cliente usa um cliente REST simples que não pode lidar com redirecionamentos, então tenho que usar algum tipo de proxy.
Os logs do Apache mostram o seguinte
[Thu Feb 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] go-ahead with proxy request proxy: https://subdomain2.mydomain.com/internal/my-endpoint [OK]
Aqui está a configuração atual para o vhost específico
<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>
Ok- depois de habilitar a depuração nos logs do apache, verifica-se que o problema estava relacionado aos certificados SSL, pois o proxy era para um servidor que aceitava apenas conexões HTTPS
Tive que atualizar a configuração do apache para a abaixo para fazê-lo funcionar