Redirecionar porta efêmera para 80

1

Estou começando no AWS e no gerenciamento de servidores em geral e apenas configuro um pipeline de implantação com o ECS e alguns contêineres.

Meu contêiner:

  • Minha porta do host é 0 e redirecionada para a porta do contêiner 4200 (porta padrão angular)
  • Está por trás de um balanceador de carga de aplicativos
  • Uma porta dinâmica é atribuída

Enquanto eu leio o mapeamento de portas e as documentações de balanceamento de carga, não consigo entender como recuperar essa porta automaticamente e rotear para a porta 80. O que eu quero é basicamente acessar meu site sem especificação de porta o URL.

Eu sei que posso encontrar o intervalo de portas padrão lá: / proc / sys / net / ipv4 / ip_local_port_range

Onde estou preso atualmente:

1 - Como a porta efêmera escolhida pode ser mapeada para a porta de tráfego HTTP padrão (80)

2 - Como posso ter certeza de que, se a porta já estiver em uso, eu ainda busco a porta certa no intervalo de portas efêmeras para que esta possa ser mapeada para 80.

    
por phadaphunk 09.08.2018 / 18:26

2 respostas

1

O que pode tornar isso complicado de entender é que, na verdade, existem três portas a serem consideradas aqui:

  1. A porta externa do Application Load Balancer (ALB) - o ouvinte
  2. A 'porta do host' da (s) instância (s) do EC2 em execução no cluster do ECS
  3. A "porta do contêiner" do aplicativo em execução no seu contêiner

A mágica acontece quando você especifica uma 'porta do host' de 0, essa é uma instrução para o ECS iniciar o contêiner com uma porta efêmera aleatória exposta na instância do host do EC2 ECS. Permitindo (por exemplo) que você execute duas instâncias do mesmo contêiner na mesma instância do EC2. Você realmente não precisa entender qual porta está em uso (exceto para talvez diagnósticos), já que o ECS / ALB cuida do mapeamento dinamicamente - exceto que você precisa garantir que o grupo de segurança de suas instâncias do ECS permita que todos os intervalos de portas efêmeros sejam o ALB - caso contrário, o tráfego não passará do ALB para o aplicativo.

A porta do contêiner interno do 4200 pode ser a mesma para cada instância do contêiner, porque é visível apenas dentro do próprio contêiner.

Em seguida, para que seu aplicativo use a porta 80 - por isso, é uma experiência perfeita para seus usuários - é a porta listener ALB que deve ser a porta 80, pois é o ALB ao qual os usuários se conectarão. href="http://yourapplication.com/"> link é um CNAME para o nome DNS do ALB.

Mais detalhes sobre como configurar isso podem ser encontrados aqui:

Como faço para configurar o mapeamento dinâmico de portas para o Amazon ECS?

E aqui:

Mapeamento dinâmico de portas no ECS com o Application Load Balancer

Por fim, embora sua meta seja exportar a porta 80, sugiro usar o HTTPS em 443 no balanceador de carga, pois você pode obter um certificado para o ALB gratuitamente na AWS. Quaisquer serviços expostos hoje devem usar TLS (SSL) sempre que possível.

Claro, se você deseja que seus usuários ainda acessem via HTTP e os redirecionem - felizmente, desde o mês passado, agora é possível usar a ação de redirecionamento no ALB para fazer isso nativamente no ALB, anexando uma regra de redirecionamento a uma porta 80 ouvinte. Mais detalhes aqui:

Ouvintes dos balanceadores de carga do seu aplicativo

    
por 26.08.2018 / 10:04
1

Você pode verificar qual serviço está sendo executado em cada porta com:

  • lsof -i: port -S
  • netstat -a | porta grep

Quanto à parte principal da sua pergunta, eu usaria o nginx. Você pode executar angular em localhost: someport e proxy your site.com:80 para localhost.

    
por 24.08.2018 / 13:33