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

Как сделать перенаправление Nginx на 404, если субдомен не существует в домене localhost

Это моя конфигурация сервера localhost для Nginx. Это в /etc/nginx/sites-enabled/development/localhost

server {
    listen 80 default_server;
    server_name localhost;
    root /var/www/html;
    index index.nginx-debian.html;

    location / {
      internal;
    }

    error_page 404 /404.html;
    location /404.html {
      root /var/www/html/errors;
      internal;
    }

}

Если я позвоню http://locahost в строке URL отображается ошибка страницы 404. Но должен показать index.nginx-debian.html. Но если я позвоню http://localhost с действующим поддоменом он работает. Как это http://users.localhost, определенный в /etc/nginx/sites-enabled/development/users.

Я хочу показать страницу по умолчанию Nginx, если я только позвоню http://localhost, 404.html если субдомена не существует, а другая любая страница, если я позвоню http://localhost правильно с определенным поддоменом.

Я решил следующее.

В /etc/nginx/sites-enabled/development/default.

server {
  listen 80 default_server;
  server_name *.localhost *.<host-name>;
  root /var/www/html/errors/404;

  location / {
    index subdomain.html;
  }

}

В /etc/nginx/sites-enabled/development/localhost.

server {
    listen 80;
    server_name = localhost;
    root /var/www/html;
    index index.nginx-debian.html;

    # to URI errors caused by paths after domain
    error_page 404 /domain.html;
    location = /domain.html {
        root /var/www/html/errors/404;
        internal;
    }
}

Я не знаю, лучшее ли это решение, поэтому, если у кого-то есть лучшее решение, напишите здесь. Спасибо.