Как мне установить хост по умолчанию для nginx?

11

Я пытаюсь выяснить, как установить хост по умолчанию для моей установки nginx. Я нашел эту статью в вики nginx:

http://wiki.nginx.org/NginxVirtualHostExample#A_Default_Catchall_Virtual_Host

К сожалению, это не работает. После перезапуска я получаю это:

Restarting nginx: nginx: [emerg] unknown directive "http" in /etc/nginx/sites-enabled/catchall:1
nginx: configuration file /etc/nginx/nginx.conf test failed

После удаления директивы http я получаю это:

Restarting nginx: nginx: [emerg] unknown log format "main" in /etc/nginx/sites-enabled/catchall:7
nginx: configuration file /etc/nginx/nginx.conf test failed

Я на Ubuntu 10.04.3, где я использую официальный PPA nginx. Версия 1.0.9 nginx работает.

Ульф Клозе
источник

Ответы:

16

Конфигурации Nginx основаны на серии вложенных блоков. Там должен быть только один http блок. Обычно это определяется в /etc/nginx/nginx.conf - все включенные файлы (например, с доступных сайтов) включены в этот блок http. Чтобы настроить хост по умолчанию / catch-all, вам нужен только раздел блока серверов для хоста по умолчанию. Это достигается добавлением «default» в директиву listen. Кроме того, обычно используется имя_сервера, которое не соответствует ни одному действительному имени - обычно это подчеркивание («_»), но также допустимы и другие символы. Если вы опустите параметр по умолчанию, первый блок сервера будет считаться стандартным. (См. Руководство nginx для server_names для получения дополнительной информации)

Конфигурация nginx по умолчанию (в этом контексте «оригинальная») может включать в себя блок сервера по умолчанию (универсальный) в файле nginx.conf, который вы можете настроить.

Что касается второй ошибки, убедитесь, что 'main' определен в nginx.conf (строка должна начинаться с 'log_format main ...' (и, конечно, проверьте ваши скобки). Вы можете полностью пропустить строку 'access_log' если вы не хотите, чтобы запросы к вашему серверу по умолчанию регистрировались (или можете изменить формат, определив новый формат).

cyberx86
источник
Это было быстро. Благодарю. Собираюсь попробовать это завтра, поспав немного ;-).
Ульф Клозе
Использование _, поскольку имя_сервера не добавляет «стандартности» сервера {}, оно просто используется для предотвращения конфликта улова с другими блоками сервера, так что нет никакого «переопределения» флага по умолчанию в директиве listen. Это единственная вещь, явно помечающая сервер по умолчанию. Тем не менее, +1
Колбиджак
@kolbyjack - Спасибо за исправление - я исправлю это в своем ответе.
cyberx86