Настройка Nginx для ловли всех необработанных vhosts

41

Если у меня уже есть куча виртуальных хостов, как я могу создать виртуальный хост для обработки запросов, которые не соответствуют ни одному из виртуальных хостов? (т.е. доступ по IP, другой домен, связанный с IP, .etc .etc)

SandyD
источник

Ответы:

52

имя сервера _; и default_server в конфигурации прослушивания - это то, что вы ищете.

Пример:

server {

   listen 80 default_server;
   server_name _;

   root /var/www/default; (or wherever)    

}
Брайан П
источник
1
И для случая https:listen 443 ssl default_server;
Джеймс Т Снелл
Когда я включаю это, мой owncloud 9не будет отвечать. Зачем? Owncloud VHOST имеет имя_сервера и не является сервером по умолчанию.
Корни
Я не использую 80только 443 открыт.
Корни
Если я добавлю это, мои другие фрагменты конфигурации в / etc / nginx / sites-enabled / игнорируются. все домены идут /var/www/defaultв этом случае. Как мне заказать фрагменты?
rubo77
Я могу создать VHOS к postgresql соединениям?
Эрлон Чарльз
4

Если вы используете SSL, то вам понадобится дополнительная сантехника для сервера default_server - сертификат и ключ (которые могут быть самозаверяющими).

server {
    server_name _;
    listen 80 default_server;
    listen 443 ssl default_server;
    ssl_certificate <path to cert>;
    ssl_certificate_key <path to key>;
    return 404; # or whatever
}

Nginx попытается принять SSL-соединение на IP-сервере, соответствующем порту / default_server. Если на таком сервере отсутствует сертификат / ключ, nginx прервет соединение. Он не будет пробовать другие серверы. Так что не забудьте сертификат / ключ.

andreycpp
источник
Важное замечание о сертификате SSL! Если сертификат отсутствует, весь сервер nginx не запустится (хотя и nginx -tговорит «хорошо»)
Филипп
3
server {
  listen 80 default_server;
  listen 443 ssl default_server;
  listen [::]:80 default_server;
  listen [::]:443 ssl default_server;

  server_name _;
  root /path/to/default;
}

Записи предназначены для порта 80 (HTTP), порта 443 (HTTPS), порта 80 IPv6 и порта 443 IPv6, соответственно.

Вы можете рассмотреть возможность добавления, log_not_found off;чтобы избежать добавления записи в журнал для страницы не найден.

Zaz
источник