nginx: [предупреждение] конфликтующее имя сервера

nginx: [предупреждение] конфликтующее имя сервера

Я не могу понять, почему возникает эта ошибка:

nginx: [предупреждение] конфликтующее имя сервера "stage.mydomain.com" на 0.0.0.0:80, игнорируется nginx: [предупреждение] конфликтующее имя сервера "stage.mydomain.com" на 0.0.0.0:443, игнорируется

Мой файл симлинков с поддержкой сайтов выглядит так. Я не очень хорошо разбираюсь в этом, но я единственный, кто имеет какие-то знания о серверах. Это было скопировано из производства. Я вижу, что порты 80 и 443 дублируются, но есть некоторые различия в конфигурации в каждом блоке.

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

решение1

Не может быть 2 операторов сервера, использующих одно и то же server_name. Nginx не будет знать, какой из них использовать, если поступит запрос, поскольку оба используют одно и то же имя виртуального хоста. Таким образом, nginx будет использовать первое совпадение.

Из вашего фрагмента конфигурации следует, что вы можете удалить оператор 2-го сервера port 80, так как корневой каталог бесполезен, так как вы в любом случае выполняете перенаправление (что то же самое и для первого оператора сервера).

Также удалите первый оператор сервера 443, так как это приведет к возникновению цикла перенаправления на самого себя.

Связанный контент