Não tenho certeza se minha terminologia está correta, então deixe-me explicar ...
Se eu tiver um domínio, test.example.com
desejo ser capaz de mapear /abc
para um aplicativo nesse servidor em execução na porta 8080
e mapear outro aplicativo /def
para um aplicativo em execução na porta 8081
.
Eu tentei com RabbitMQ que estou rodando dentro do docker e expondo a porta 15672
, NGINX porém não está dentro do Docker e rodando diretamente na máquina.
docker run -d --hostname rabbitmq --name rabbitmq -p 15672:15672 rabbitmq:3-management
Seja rodando dentro do Docker ou direto na máquina, acredito que seja irrelevante, tenho uma aplicação rodando na porta 15672
que quero mapear para a localização/rabbitmq
Minha configuração do NGINX que tentei até agora:
server {
listen 80;
server_name test.example.com;
location /rabbitmq {
proxy_pass http://127.0.0.1:15672;
}
}
Ao ir para test.example.com/rabbitmq
eu estou vendo o seguinte:
Não sei se é a página do NGINX ou a página do RabbitMQ mostrando não encontrado.
Abrindo a porta 15672
no servidor, posso acessar claramente o RabbitMQ
E ir para :15672/blah
ela parece ser a mesma página não encontrada, então deve estar chegando ao RabbitMQ.
RabbitMQ está escutando 0.0.0.0:15672
, então deve funcionar de qualquer domínio, host ou ip.
Então, como faço para test.example.com/rabbitmq
realmente servir o conteúdo de test.example.com:15672
?
Eu consegui trabalhar usando uma reescrita:
Esta é minha configuração nginx; estou usando também como um proxy reverso, mas para meu aplicativo de nó. "location /SienaBikes" é o aplicativo nodejs e funciona corretamente para mim.
Uma coisa que fiz (mas não sei se também se aplica ao rabbitmq) foi instalar o PM2 Daemon e executar meu aplicativo de nó como um processo. Talvez você precise fazer isso também ou algo parecido.
Sua configuração NGINX está boa, só precisa reescrever o mapeamento de localização como abaixo.