У меня запущен экземпляр nginx, который обслуживает несколько веб-сайтов. Первое - это сообщение о статусе IP-адреса сервера. Второй - консоль администратора на admin.domain.com
. Они отлично работают. Теперь я бы хотел, чтобы все остальные запросы домена направлялись в один index.php
- у меня множество доменов и поддоменов, и нецелесообразно перечислять их все в конфигурации nginx.
До сих пор я попытался установить server_name
в *
но это не удалось , как недопустимый шаблон. *.*
работает, пока я не добавлю другие серверные блоки, тогда я предполагаю, что он конфликтует с ними.
Есть ли способ запустить серверный блок в nginx после того, как были определены другие сайты?
NB Я не спамер, это настоящие сайты с полезным контентом, просто они работают на одной и той же CMS из базы данных!
Ответы:
Измените параметр прослушивания на это в блоке сервера для приема всей почты домена. (Добавить
default_server
) это займет все ваши неопределенные соединения (на указанном порту).если вы хотите поместить все в index.php, если файл или папка не существует;
источник
server_name _;
для страницы статуса IP-адрес, пришлось указать,server_name x.x.x.x
но ничего страшного!default_server
, похоже, не работает в nginx 1.4.6, который в настоящее время является последней версией Ubuntu 14.04 ... Когда я добавляю его,configtest
команда возвращает ошибку, и перезапуск сервера тоже не работает. Я пробовал точно такую же конфигурацию на своем сервере с Debian jessie, у которого есть nginx 1.6.2, и он отлично работает. Так что попробуйте другую версию, если у вас 1.4.6 ...default_server
директива также устанавливает сервер, который будет обрабатывать квитирование SSL для запросов на этом порту. Итак, если вы хотите, чтобы серверный блок A обрабатывал SSL, а сервер B действовал как перехватчик для HTTPS, решение - установитьserver_name ~^(.+)$
на сервере B.Также работает простое подчеркивание:
Источник: http://nginx.org/en/docs/http/server_names.html
источник
listen 80 default_server
укажете в своей config._
это просто неверное имя?Это будет работать:
источник
server_name ~.
кажется более эффективнымДля меня как-то определить default_server не удалось. Я решил это
используя регулярное выражение all.
источник
Всего 1
server
директиваИз Документов Nginx
listen
Если у вас есть только 1
server
директива, которая будет обрабатывать все запросы, вам не нужно ничего устанавливать.Множественная
server
директиваЕсли вы хотите, чтобы весь запрос соответствовал указанной
server
директиве, просто добавьтеdefault_server
параметрlisten
, Nginx будет использовать этуserver
директиву по умолчанию.Около
server_name _;
Из Документов Nginx
Неважно, что
server_name
вы установили, это просто недопустимое доменное имя .источник
Теперь вы можете использовать маску:
Подробнее см. Здесь: http://nginx.org/en/docs/http/server_names.html
источник
Если вы также хотите перехватывать запросы с пустым
Host
заголовком (что разрешено в HTTP / 1.0 ), вы можете использовать как регулярное выражение, так и пустойserver_name
:источник