Temos uma versão do controle de qualidade, uma versão do UAT e uma versão DEV do aplicativo da Web. Os usuários precisam acessá-los via http://uat.company.com:41002/webapp
, http://qa.company.com:41002/webapp
e http://dev.company.com:41002/webapp
. Há também um webapp diferente na porta 41001 e também na porta 8080 que precisam acessar.
Esses URLs precisam estar disponíveis externamente para a empresa e só temos um endereço IP público no qual eles podem ser acessados. Como tal, os registros DNS precisam de todos os 3 endereços para apontar para um IP. Nesse endereço IP único, um servidor reside executando nginx. no fundo eu preciso de cada URL para apontar para um servidor diferente
http://uat.company.com --> 123.123.123.1
http://qa.company.com --> 123.123.123.2
http://dev.company.com --> 123.123.123.3
Eu tenho medo de não saber a terminologia correta, no entanto, o restante do URI e a porta também devem ser transferidos para o endereço IP. Ou seja se alguém visitar
http://uat.company.com:41002/webapp/somepage'
aparecerá como se fosse a página que eles visitaram, mas na verdade eles estarão olhando para
http://123.123.123.1:41002/webapp/somepage
ou se eles visitaram
http://qa.company.com:8080/static/home.html
eles estariam realmente olhando para
http://123.123.123.2:8080/static/home.html
mas o navegador ainda diria http://qa.company.com:8080/static/home.html
Eu tentei
server {
server_name uat.company.com;
listen 41001;
listen 41002;
listen 8080;
location / {
proxy_pass http://123.123.123.1:$server_port$uri;
proxy_set_header Host $host;
}
}
no entanto, isso me dá uma página de gateway ruim 502 com log: 2015/01/28 16:04:49 [crit] 30571#0: *1 connect() to 123.123.123.1:41002 failed (13: Permission denied) while connecting to upstream, client: 172.23.128.245, server: uat.company.com, request: "GET /webapp/ HTTP/1.1", upstream: "http://123.123.123.1:41002/webapp/", host: "uat.company.com:41002"
Espero que isso seja mais claro.
Atualizar
A partir da sugestão de Xaviers de que o SELinux poderia estar atrapalhando, eu o desabilitei e fui mais longe. Usar a configuração nginx acima agora parece estar se conectando ao segundo servidor: A porta, entretanto, ainda não é executada. Eu estou chamando
uat.company.com:41002/webapp/
Isto, se chamar o serviço diretamente, redireciona para
uat.company.com:41002/webapp/spring/config/main
No entanto, o que está acontecendo por meio do proxy é que ele está retornando ou terminando em
uat.company.com/webapp/spring/config/main
e, portanto, não consegue carregar uma página ...