Loadbalancing com nginx e tomcat

1

Olá, isso deve ser bastante fácil de responder para qualquer administrador do sistema, o problema é que eu não sou administrador do servidor, mas eu tenho que completar esta tarefa, estou muito perto, mas ainda não consegui fazê-lo. Aqui está o que quero dizer, tenho duas instâncias de tomcat em execução em machine1 e machine2 . As pessoas geralmente acessam essas pessoas visitando os URLs:

http://machine1:8080/appName
http://machine2:9090/appName

O problema é que quando eu configuro o nginx com nome de domínio, por exemplo, domain.com , nginx envia solicitações para http://machine1:8080/ e http://machine2:9090/ em vez de http://machine1:8080/ e http://machine2:9090/appName

Aqui está minha configuração (muito básica, como se pode notar):

upstream backend {
  server machine1:8080;
  server machine2:9090;
}

server {

  listen 80;

  server_name www.mydomain.com mydomain.com;

  location / {

    # needed to forward user's IP address to rails
    proxy_set_header  X-Real-IP  $remote_addr;

    # needed for HTTPS
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_max_temp_file_size 0;

    proxy_pass http://backend;

  } #end location

} #end server

Quais alterações devo fazer para fazer o seguinte: - quando o usuário visita mydomain.com - transfira-o para machine1:8080/appName ou machine2:9090

Obrigado

Atualização de perguntas:

Eu acho que isso é complicado para o primeiro temporizador como eu. Eu vou usar apenas um servidor de instância em vez de dois, aqui está minha configuração:

server {

  listen 80;

  server_name www.mydomain.com mydomain.com;
  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8080;
    }

}

O problema:

Quando visito mydomain.com , recebo a conhecida página do tomcat If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations! .

Se eu for manualmente para mydomain.com/myApp , tudo funcionará como esperado.

Pergunta:

Existe uma maneira de eu configurar isso para fazer o seguinte:

Quando eu digito na barra de endereço mydomain.com que eu sou transferido para mydomain.com/myApp

Ou eu estou completamente fora neste caso. Existe uma maneira mais fácil de fazer isso?

Atualização II:

Quando altero a configuração para:

proxy_pass http://localhost:8080/appName/;

O site parece estar funcionando, mas na verdade não funciona. Links não funcionam, o css / js não carrega.

    
por London 22.11.2012 / 23:22

2 respostas

1

Não está claro para mim com base na sua pergunta qual máquina, ou ambos, tem "nome do aplicativo" no URL de destino. Os seus destinos são:

http://machine1:8080/appName
http://machine2:9090/appName

Estou apenas dando uma olhada aqui, mas gostaria de adicionar "/ appName" ao bloco upstream OU à linha de passagem do proxy:

upstream backend {
  server machine1:8080/appName;
  server machine2:9090/appName;
}

OR

location / {
    ...
    proxy_pass http://backend/appName;
} #end location

A documentação da diretiva proxy_pass pode ser encontrada aqui .

    
por 23.11.2012 / 00:45
0

Você simplesmente deseja um HTTP 302 (um redirecionamento).

rewrite ^/*$ https://www.example.com/appName/ redirect;

O regex captará https://www.example.com junto com https://www.example.com/ e https://www.example.com/// . O novo URL será exibido para o usuário do navegador.

Eu sei que a resposta está cerca de 5 anos atrasada, mas o tópico foi colidido e vi que "alguém está errado na Internet".

    
por 09.03.2017 / 23:14