Proxy Nginx dependendo do nome de domínio

Proxy Nginx dependendo do nome de domínio

Estou usando um EC2 da AWS com Nginx.

Digamos que eu tenha três nomes de domínio: domínio1.com, domínio2.com, domínio3.com. Digamos também que tenho três aplicações Rails em três portas diferentes: 3000, 3001, 3002.

Todos esses domínios estão vinculados ao meu servidor na porta 80.

Dependendo de qual URL é solicitado, quero que minha porta 80 redirecione a solicitação para a porta correta.

Como devo configurar meu arquivo host virtual? Eu sei que o bloco If existe, mas o Nginx parece não recomendá-lo. Meu plano é ter vários sites no meu EC2.

Não consigo bloquear o servidor na porta do meu aplicativo Rails, pois isso bloquearia o servidor Rails.

Responder1

Dependendo de qualDOMÍNIO(?):

server {
    listen 80;
    server_name .domain1.com; # Wildcard domain
    return 301 $scheme://$host:3000$request_uri; 
    # use $host above because we use a wildcard domain
}

E repita este bloco de servidor para todos os seus domínios e todos os seus aplicativos/portas Rails

Responder2

Você disse que deseja seus sites em portas diferentes e que deseja que eles sejam vinculados à porta 80. Isso não está claro.

O Nginx pode escutar na porta 80 sites diferentes, basta configurá-lo com domínios diferentes. Por exemplo

server {
  server_name www.example.com;
  listen 80;
  return 301 https://www.example.com$request_uri;
}

server {
  server_name www.example.com;
  listen 443 ssl https;
  root /var/www/site;
  // Insert https stuff here
}

server {
  server_name www.example2.com;
  listen 80;
  root /var/www/site2;
}

server {
  server_name www.example3.com;
  listen 80;
  root /var/www/site3;
}

Você também pode executar um balanceador de carga e várias instâncias do nginx, mas isso seria inútil.

informação relacionada