Tenho um servidor executando um aplicativo (Redmine) no Rails, com Passenger, e preciso criar um script de acesso à API REST do Redmine (do próprio servidor - não preciso de acesso remoto).
O problema é que o Redmine está por trás de um proxy reverso do Apache. Um login OIDC é necessário antes que eu possa realmente acessar o Redmine, e estou achando isso difícil de lidar (o cliente precisa obter um token de acesso antes de poder fazer a solicitação cURL).
Pergunta: há alguma maneira de fazer a chamada de API do localhost, ignorando o front-end do Apache, para que eu não tenha que lidar com o SSL e o login do OIDC? Com os outros proxies reversos (Java) com os quais estou familiarizado, o Apache transfere uma solicitação HTTP para uma porta conhecida, e eu posso acessar o aplicativo diretamente nessa porta, ignorando o SSL e o OIDC. No entanto, não parece haver uma maneira de fazer isso com o Passenger.
Você precisa se conectar ao Passenger, em vez de ignorá-lo. Você pode executar outra instância se o Apache já estiver executando uma. Você precisa definir
passenger_document_root
(isso resolverá o//public
erro). Supondo que você esteja em um ambiente de produção e o Passenger esteja escutando em 3000 (verifique o log ou netstat/etc):Certifique-se de que as configurações do administrador habilitem a API REST (Administração > Configurações > API > Habilitar serviço web REST). Agora você pode cURL diretamente do cliente. Isso deve gerar uma lista de usuários:
Você precisará de um nome de usuário e senha de administrador para muitas operações de API. Isso ignora o front-end completamente, então não há certificados SSL/etc.
Editar
Eu escrevi isso a partir de algumas notas antigas. Eu tentei de novo, e acho que definir o
passenger_document_root
envvar não é necessário. No entanto, parece que é necessário executarpassenger start
a partir do diretório de instalação (aquele que contém oconfig
dir). Presumivelmente, há outro envvar que poderia lidar com isso sem mudar para esse diretório.