Use o NGINX para mapear “diretórios” para aplicativos

2

Não tenho certeza se minha terminologia está correta, então deixe-me explicar ...

Se eu tiver um domínio, test.example.com , quero 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 o RabbitMQ que estou rodando dentro da janela de encaixe e expondo a porta 15672 , mas o NGINX 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

Se ele está sendo executado dentro do Docker ou diretamente na máquina, acredito ser irrelevante, tenho um aplicativo em execução na porta 15672 que desejo mapear para a localização /rabbitmq

Minha configuração do NGINX que experimentei 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 , vejo o seguinte:

NãoseiseapáginadoNGINXouapáginadoRabbitMQnãoforamencontradas.

Abrindoaporta15672noservidoreupossoclaramentechegaraoRabbitMQ

Eindopara:15672/blah,pareceseramesmapáginanãoencontrada,porissodeveestarchegandoaoRabbitMQ.

ORabbitMQestáouvindoem0.0.0.0:15672,porissodevefuncionaremqualquerdomínio,hostouip.

Então, como eu faço test.example.com/rabbitmq realmente veicular o conteúdo de test.example.com:15672 ?

    
por Jan Vladimir Mostert 13.04.2016 / 22:28

3 respostas

2

Eu consegui trabalhar usando uma reescrita:

server {
        listen 80;
        server_name test.example.com;

        location /rabbitmq {
                rewrite         /rabbitmq/(.*) /$1 break;
                proxy_pass      http://127.0.0.1:15672;
                proxy_redirect  off;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

    
por 14.04.2016 / 06:51
0
server {
    listen 80;
    listen 443 default_server ssl;
    ssl_certificate /etc/nginx/ssl/1_www.danielecencig.com_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/ssl.key;
    server_name www.danielecencig.com; 
    root /www/public;

    rewrite  ^/$  /index.html  permanent;

    location / {
        root /www/public;
        try_files $uri $uri/ $uri.html =404;
    }

    location /SienaBikes {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    error_page 503 /error/maintenance.html;
        location ^~ /error/ {
        internal;
        root /www/public;
    } 
}

Esta é minha configuração nginx; Eu estou usando isso também como um proxy reverso, mas para o meu aplicativo nó. "location / SienaBikes" é o aplicativo nodejs e funciona corretamente para mim.

Uma coisa que fiz (mas também não sei se se aplica ao rabbitmq) é instalar PM2 Daemon e execute meu aplicativo de nó como um processo. Talvez você precise fazer isso também ou algo do tipo.

    
por 13.04.2016 / 23:05
0

Sua configuração do NGINX é boa, só precisa reescrever o mapeamento de localização como abaixo.

server {

        listen 80;
        server_name test.example.com;

        location /rabbitmq/ {
                proxy_pass      http://127.0.0.1:15672;
        }
}
    
por 14.04.2016 / 07:19

Tags