nginx: [advertencia] nombre de servidor conflictivo

nginx: [advertencia] nombre de servidor conflictivo

No he podido entender por qué recibo este error:

nginx: [advertencia] nombre de servidor conflictivo "stage.mydomain.com" en 0.0.0.0:80, ignorado nginx: [advertencia] nombre de servidor conflictivo "stage.mydomain.com" en 0.0.0.0:443, ignorado

Mi archivo de enlace simbólico habilitado para sitios se ve así. No estoy muy familiarizado con esto, pero soy el único que tiene algún conocimiento sobre servidores. Esto fue copiado de producción. Veo que el puerto 80 y 443 están duplicados pero hay algunas diferencias de configuración en cada bloque.

server {
  listen        80;
  server_name   stage.mydomain.com;
  return       301 https://stage.mydomain.com$request_uri$is_args;
}

server {
  listen         80;
  server_name    stage.mydomain.com;
  location '/.path/here' {
          default_type "text/plain";
          root /home/username/www/app_name/current/public;
  }
  return         301 https://stage.mydomain.com$request_uri$is_args;
}

server {
  listen 443;
  ssl on;
  ssl_certificate     /a/path/to/my/file.pem;
  ssl_certificate_key /a/path/to/my/key.pem;
  ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
  ##ssl_ciphers         HIGH:!aNULL:!MD5;
  ssl_ciphers "randomstuffhere";
  ssl_prefer_server_ciphers on;
  client_max_body_size 32000M;
  server_name    stage.mydomain.com;
  return       301 https://stage.mydomain.com$request_uri;
}


server {
  listen 443;
  ssl on;
  ssl_certificate     /a/path/to/my/file.pem;
  ssl_certificate_key /a/path/to/my/key.pem;
  ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
  ##ssl_ciphers         HIGH:!aNULL:!MD5;
  ssl_ciphers "randomstuffhere";
  ssl_prefer_server_ciphers on;
  client_max_body_size 32000M;
  server_name    stage.mydomain.com;
  root /home/username/www/app_name/current/public;   # <--- be sure to point to 'public'!
  passenger_enabled on;
  rails_env staging;
}

Respuesta1

No puede tener 2 declaraciones de servidor usando el mismo nombre de servidor. Nginx no sabría cuál usar si llega una solicitud, ya que ambos comparten el mismo nombre de host virtual. Por tanto, nginx utilizará la primera coincidencia.

Desde su fragmento de configuración, parece que puede eliminar la declaración del puerto 80 del segundo servidor, ya que el directorio raíz es inútil ya que está haciendo una redirección de todos modos (que es lo mismo para la primera declaración del servidor)

También elimine la primera declaración del servidor 443, ya que esto provocaría un bucle de redireccionamiento hacia sí mismo.

información relacionada