Proxy Nginx según el nombre de dominio

Proxy Nginx según el nombre de dominio

Estoy usando un EC2 de AWS con Nginx.

Digamos que tengo tres nombres de dominio: dominio1.com, dominio2.com, dominio3.com. Digamos también que tengo una aplicación de tres rieles en tres puertos diferentes: 3000, 3001, 3002.

Todos estos dominios están vinculados a mi servidor en el puerto 80.

Dependiendo de qué URL se solicite, quiero que mi puerto 80 redirija la solicitud al puerto correcto.

¿Cómo debo configurar mi archivo de host virtual? Sé que el bloque If existe, pero parece que Nginx no lo recomienda. Mi plan es tener varios sitios en mi EC2.

No puedo bloquear el servidor en el puerto de mi aplicación Rails ya que bloquearía el servidor Rails.

Respuesta1

Dependiendo de cualDOMINIO(?):

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
}

Y repita este bloqueo de servidor para todos sus dominios y todas sus aplicaciones/puertos Rails.

Respuesta2

Ha dicho que desea que sus sitios estén en puertos diferentes y que desea que estén vinculados al puerto 80. Esto no está claro.

Nginx puede escuchar en el puerto 80 diferentes sitios web, simplemente configúrelo con diferentes dominios. Por ejemplo

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;
}

También podría ejecutar un equilibrador de carga y varias instancias de nginx, pero eso no tendría sentido.

información relacionada