Назад | Перейти на главную страницу

Почему Nginx запрашивает недействительный сертификат в несуществующих поддоменах только для перенаправления на 404?

  1. Есть два серверных блока.

  2. default_server блок внутри http блок nginx.conf:

server {
   server_name _;
   listen 80 default_server;
   listen [::]:80 default_server ipv6only=on;
   listen 443 default_server;
   return 404;
}
include /etc/nginx/sites-enabled/*;
  1. Рабочий блок домена / сайта внутри sites-enabled:
server {
  listen 80;
  listen 443;
  server_name example.com;
  return 301 https://www.$server_name$request_uri;
}

server {
  listen 80;
  listen 443 ssl;
  root /var/www/example.com/htdocs/;
  index index.html index.htm;

  server_name www.example.com;
}

(У меня есть эта настройка для перенаправления всех не www на www и всего http на https)

  1. У меня есть сертификат для моего домена как без www, так и с www. Nginx по какой-то причине вызывает любой поддомен вместо того, чтобы указать, что веб-сайт по умолчанию не может быть найден /ERR_CONNECTION_RESET/ ошибка.

  2. Например, если я пойду в https://asdf.example.com/ Nginx вызывает его, и браузер сообщает вам, что это небезопасный сертификат SSL, затем вы все равно принимаете его и получаете страницу 404.

  3. Как перейти на страницу 404, пропустив сообщение о недопустимом сертификате, или как перейти прямо к странице «страница не найдена», а не к 404? Например. как пойти в https://asdf.serverfault.com он не дает 404, он дает ERR_CONNECTION_RESET/. Я хочу, чтобы это было для всех несуществующих поддоменов и доменов на моем сервере.

Обновить: Может быть, все мои ssl_certificate строки добавляются и в основной блок http? Если да, то вызов по ERR_CONNECTION_RESET а не 404, как в данном примере на 6..

Если вы откроете https://asdf.example.com непосредственно тогда браузер разрешит asdf.example.com на IP-адрес, а затем подключитесь к нему, используя HTTPS протокол. Если сервер (с полученным IP) прослушивает 443 порт и не возвращает сертификат для этого домена или недействителен, чем браузер предупредит вас о небезопасном протоколе перед завершением запроса (например, отображение 404 ошибка).

https://asdf.serverfault.com выдает ошибку подключения, потому что этот поддомен не зарегистрирован, у него нет IP-адреса. Вот почему вы видите эту ошибку. Если ты хочешь убедиться asdf.example.com возвращает ошибку подключения вместо предупреждения ssl, затем убедитесь, что этот поддомен не зарегистрирован и нет записи с подстановочным знаком (*) для example.com.